mod_rewrite删除在Laravel中不起作用的尾部斜杠

时间:2012-12-31 05:46:30

标签: .htaccess mod-rewrite laravel laravel-3

我的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。

为什么这样做?我如何解决它?

谢谢:)

1 个答案:

答案 0 :(得分:1)

在所有规则之上添加RewriteBase /(或基本URI应该是什么)。

正在发生的事情是mod_rewrite试图猜测重写规则的目标是URL路径还是文件路径,并且它猜错了它是文件路径并附加了错误的基本路径。