Making Laravel work on a shared hosting can be troublesome, because Laravel needs to have its document root set to the public
directory. This may not be configurable by a user or even desirable, when the server is hosting multiple websites.
Here's a simple method using only a .htaccess
file placed in Laravel's root directory - e.g. alongside app
, bootstrap
, config
, ... No changes whatsoever are necessary to your code.
The file rewrites all the requests so that requesting /file.png
would in fact return /public/file.png
and anything else is routed to /public/index.php
. This also ensures that nothing outside the public
folder can be accessed, thereby protecting any sensitive files like .env
or database/*
.