我在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>