I am trying to install a laravel 5 app in this directory on my server:
public_html/myapp/
And I want it to be accessed at th
What you can do is use a symlink.
Create a symlink of your app's public folder inside the public_html folder
cd /path/to/your/public_html
sudo ln -s /path/to/your/laravel_app/public myapp
You can read more about symlinks here.
This example should work for following cases:
Follow these steps:
It's always recommended to separate public folder from the rest of your app. You can add some protection to Laravel folders by adding .htaccess files inside them that will contain "Deny from all".
You can easily achieve this by adding additional .htaccess
file in the myapp
folder (this will redirect all of your requests in myapp
folder to the public
as it should):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
You should also modify the .htaccess
in your myapp/public
directory, like this:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /myapp/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
</IfModule>
The change here is that you rewrite the base path RewriteBase /myapp/
I was having the same issue, but with the RewriteBase parameter it was possible to fix it.
This is my .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /my_app/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>