Laravel Website: Redirecting /public Folder to Main Domain Using .htaccess
When you deploy a Laravel application, you’ll typically find that the entry point of your website is the public
directory, which contains the index.php
file. This setup is essential for security reasons, as it keeps your application’s core files out of the public HTTP directory. However, when your users visit your website, you might not want the /public
segment to appear in the URL. Redirecting traffic from the main domain to the /public
directory using .htaccess
can create a cleaner, more professional appearance for your Laravel website. In this blog post, we’ll go through how to set up such a redirection.
Why Redirect the /public Folder?
The primary reason to redirect the /public
folder to the main domain is to simplify the URL that your users see. Instead of accessing your website through example.com/public
, they can simply visit example.com
. This not only looks better but can prevent confusion and reinforce that your site is a professional platform.
How to Setup Redirection Using .htaccess
Here’s a step-by. step guide on how to achieve this redirection:
1. Check Your Server Environment
Before proceeding, ensure your web server is Apache. The .htaccess
file is a configuration file used with Apache servers. If you’re using Nginx or another server, this guide won’t apply as .htaccess
files are not used by those systems.
2. Locate or Create Your .htaccess File
You need to either locate or create a .htaccess
file in the root directory of your Laravel application (not inside the public
directory). If it doesn’t already exist, you can create one using a text editor. Below is the screenshot of cPanel file manager.

3. Modify the .htaccess File
Add the following rules to your .htaccess
file to redirect requests to the public
directory. This configuration assumes that mod_rewrite
is enabled on your Apache server, which is usually the case.
RewriteEngine On
# Redirect HTTP to HTTPS (optional but recommended for security)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect from root to the public directory
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]
4. Test Your Configuration
After saving your changes, it’s crucial to test your website. Navigate to your domain and see if the website loads without the /public
in the URL. You should also try accessing files within the public
directory to ensure they are accessible correctly.
Troubleshooting Common Issues
If you encounter issues, here are a few things to check:
- .htaccess Not Taking Effect: Make sure that the
.htaccess
file is enabled by your Apache configuration (AllowOverride All
might need to be set in your Apache configuration file). - 500 Internal Server Error: This usually indicates a syntax error in the
.htaccess
file. Double-check your configuration against the example provided.
Some Useful Commands for Laravel Website
php artisan route:cache
php artisan cache:clear
php artisan config:cache
php artisan view:clear
php artisan optimize
Conclusion
Redirecting the /public
folder to the main domain enhances the cleanliness and professionalism of your URL structure in a Laravel application. By following the steps outlined above, you can achieve this configuration smoothly and maintain the security benefits of keeping application core files out of the public directory. Happy coding!
By redirecting visitors seamlessly, your Laravel site not only adheres to best practices but also offers a better user experience, reinforcing the professional quality of your digital presence.