【问题标题】:How to Redirect to a url containing an anchor (#)?如何重定向到包含锚点 (#) 的 url?
【发布时间】:2009-08-18 00:15:47
【问题描述】:

我需要采用标准的传入 url 并 rewrite 将它们重定向到单个页面上的特定锚点(传入的 html 页面名称成为锚点名称)。例如,规则是这样的:

RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R]

所以这个网址:

http://foo.com/files/bar.html

...会变成:

http://foo.com/test.html#bar

规则本身运行良好,但 # 字符在浏览器地址栏中被编码为:

http://foo.com/test.html%23bar

这当然不能作为锚正常工作。 .htaccess 中有没有办法强制它不对哈希进行编码?我也尝试过像\# 一样转义它,但这没什么区别。

【问题讨论】:

    标签: mod-rewrite encoding url-rewriting


    【解决方案1】:

    在您的规则中尝试使用 noescape (NE) 标志:

    RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE, R]
    

    【讨论】:

    • 太棒了,谢谢。我认为它必须是一些简单的东西,但谷歌没有给我指路;)
    【解决方案2】:

    使用NE,或无转义标志:

    RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE,R]

    【讨论】:

    • Pat 比我快 57 秒 ;) 让全世界知道 SO 的“新答案”警告需要更长的时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2010-10-07
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多