我在localserver上有一个laravel项目,并希望即使将尾部斜杠添加到url也能工作。使用localhost url访问它时工作正常。 htaccess如下:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /LaravelProject/public/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ $1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
试图访问类似
的页面http://localhost/LaravelProject/public/login
and
http://localhost/LaravelProject/public/login/
工作正常。
但是我也有像这样定义的VirtualHost
<VirtualHost *:80>
DocumentRoot "C:/wamp/www/LaravelProject/public"
ServerName LaravelProject.dev
ServerAlias www.LaravelProject.dev
ErrorLog "c:/wamp/logs/apache_error.log"
CustomLog "c:/wamp/logs/access.log" common
</VirtualHost>
通过网址laravelproject.dev
,我可以访问文档根目录,并可以看到“你已经到达”。但是,当我尝试访问其他网址laravelproject.dev/login
时,它会给我500 Internal Server Error
。
如果我从RewriteBase
移除.htaccess
并将RewriteRule
修改为
RewriteRule ^(.*)/$ /$1 [L,R=301]
然后网址laravelproject.dev/login
和laravelproject.dev/login/
正常工作。
如果我这样做,问题仍然存在,localhost
url带有尾部斜杠和
网址http://localhost/LaravelProject/public/login/
重定向到http://localhost/login
。
我希望能够使用 localhost 和虚拟主机网址使用和不使用结尾斜杠,并提供相同的结果。看起来,它对我来说是一个或另一个。
答案 0 :(得分:0)
我认为您的.htaccess文件中不需要任何这些行。我已经在几个项目中设置了这样的设备并且它的工作非常好:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>