【问题标题】:mod_rewrite remove trailing slash not working in Laravelmod_rewrite 删除尾部斜杠在 Laravel 中不起作用
【发布时间】:2012-12-15 09:31:47
【问题描述】:

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

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

谢谢:)

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 好电话! :) 我完全错过了:P
    猜你喜欢
    • 2011-03-05
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多