Laravel htaccess

Alexnl picture Alexnl · Jul 7, 2014 · Viewed 73.4k times · Source

I've setup a new install of Laravel on my local. It appears there are issues with htaccess or Apache settings. I've researched for a number of hours and tried everything I read.

  • OSX Lion 10.7.5
  • MAMP 3.0.5
  • PHP 5.5.10
  • mod_rewrite is being loaded.

My development server works with other sites. This is the first time I am trying Laravel 4.

I get a 403 Forbidden on the welcome page which is located at website.dev:8888/

Apache gives me this error: Directory index forbidden by Options directive

Here is my .htaccess file content:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Here are a few additional actions I've taken:

  • AllowOverride is set to All in httpd.conf
  • Added virtual host code section to httpd-vhosts.conf
  • verified that the hosts file contains a line for the site 127.0.0.1 website.dev

I've also tried various lines in the htaccess which I found in articles and I also restarted apache each time I made changes to the conf files. No routes work. When I go to website.dev:8888/public I get a blank page, no error. If I go to a route I created such as website.dev:8888/users I get a 404 not found error.

Thank you for your help!

Answer

Mohammad H. picture Mohammad H. · Feb 7, 2020

This solution worked fine, best solution ever for me. Paste this code into root htaccess. That's all. Leave all other files as they are

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>