Laravel 5 – Remove Public from URL
Solution 1:
For Laravel 5:
- Rename
server.php
in your Laravel root folder toindex.php
- Copy the
.htaccess
file from/public
directory to your Laravel root folder.
That's it!
Solution 2:
PLEASE NOTE when serving a Laravel project with Docker: you won't need to do any of this. Only use this option when your root (or more commonly: public_html
) directory of your website is your Laravel project (this is not the case when you're using Docker).
DON'T!
YOU REALLY SHOULD NOT rename server.php
in your Laravel root folder to index.php
and copy the .htaccess
file from the /public
directory to your Laravel root folder!!!
This way everyone can access some of your files (.env
for example). Try it yourself. You don't want that!
DO
Instead, you should create an .htaccess
file in your root like this:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
This will silently rewrite all your base URIs to the /public
folder. Even all Headers, for example the HTTP Authorization Header, and all optional URI parameters will silently be passed on to the /public
folder as well.
That's all