0

我在我的 Laravel 3 安装的 htaccess 文件中有以下代码设置:

# 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

因此,尾部斜杠被删除,但它重定向到绝对 URL。

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

谢谢 :)

4

1 回答 1

1

在所有规则之上添加一个RewriteBase /(或任何基本 URI 应该是)。

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

于 2012-12-31T06:02:48.547 回答