我已经在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和其他地方找到的所有内容,但到目前为止找不到任何解决方案。
有什么主意吗?
答案 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>