我的htaccess文件中为我的Laravel 3安装设置了以下代码:
# Removes trailing slashes (prevents SEO duplicate content issues)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
# Enforce www
RewriteCond %{HTTP_HOST} ^([0-9a-z-]+)\.([0-9a-z-]+)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Remove index.php from base URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
看起来很好,直到第一个ReWrite条件被访问。
导航到此网址:
/information/
将我重定向到:
/home/xxx/Dropbox/Development/laravel/httpdocs/information
因此正在删除尾部斜杠,但它会重定向到abolsute URL。
为什么这样做?我如何解决它?
谢谢:)
答案 0 :(得分:1)
在所有规则之上添加RewriteBase /
(或基本URI应该是什么)。
正在发生的事情是mod_rewrite试图猜测重写规则的目标是URL路径还是文件路径,并且它猜错了它是文件路径并附加了错误的基本路径。