如果没有/index.php

时间:2018-09-08 09:01:12

标签: php laravel apache alias

我已经在apache服务器配置文件(/etc/apache2/mods-enabled/alias.conf)中创建了一个别名,以定位公用文件夹。

    Alias /laravel/ "/home/user/dev/web/laravel/public/"

    <Directory "/home/user/dev/web/laravel/public/">
            Options Indexes FollowSymLinks MultiViews ExecCGI
            AllowOverride All
            Require all granted
    </Directory>

此外,我写了以下.htaccess

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

    RewriteEngine On

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

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^/laravel/(.*) /laravel/index.php/$1 [L]

</IfModule>

现在,当我访问http://IP/laravel时,将按预期加载index.php。但是,如果我要拨打http://IP/laravel/load_examples之类的GET路线,那我就会收到NOT FOUND错误。

相反,如果我访问http://IP/laravel/index.php/load_examples,则会按预期加载路线。

在我看来,.htaccess和重写规则出了些问题。

我尝试了在SO和其他地方找到的所有内容,但到目前为止找不到任何解决方案。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

在显示的代码块之前的别名中尝试添加:

DocumentRoot /home/user/dev/web/laravel/public/

然后为您的.htaccess尝试一下:

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

</IfModule>