Apache2.4 和 Laravel 5.4 在子文件夹中带有别名,如果没有 /index,则无法正常工作.php



我在apache服务器conf文件(/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时.php按预期加载。但是,如果我要像http://IP/laravel/load_examples一样调用 GET 路由,我会得到一个NOT FOUND错误。

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

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

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

知道吗?

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

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>

相关内容

  • 没有找到相关文章

最新更新