【问题标题】:mod_rewrite redirects screw up pathsmod_rewrite 重定向搞砸了路径
【发布时间】:2009-07-18 15:50:28
【问题描述】:

这是我的重定向:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1

问题是,如果我输入http://www.example.com/apple,当涉及到页面上的链接时就可以了。

但是如果我使用http://www.example.com/apple/(注意最后一个斜杠),那么链接都会搞砸。

我如何编写 .htaccess 以使链接不包含最后一个斜线并且不会搞砸页面上的链接?

更新:我最终使用了:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您可以先用以下内容去除尾部斜杠:

    remove-those-trailing-slashes-from-your-uris

    然后在该点之后正常处理。

    【讨论】:

      【解决方案2】:

      您应该考虑使用绝对 URL 路径或绝对 URL 来引用外部资源。

      因为相对 URL 是从基本 URL 解析的,如果没有另外声明,即是当前文档的 URL(请参阅BASE HTML element)。因此,如果您仅使用相对 URL 路径 baz/quux 引用 /baz/quux,则在 /foo 中使用时将正确解析为 /baz/quux,但在 /foo/bar 中使用时将解析为 /foo/baz/quux。但绝对 URL 路径 /baz/quux 始终解析为 /baz/quux

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 2012-06-15
        • 2018-10-26
        • 2010-11-26
        相关资源
        最近更新 更多