我有一个单页网站,使用井号 (#) 访问不同页面。
问题是,一些 PDF 查看器会破坏编码井号的链接,将其替换为#
,%23
因此例如链接my.app.com/#product/22
变为my.app.com/%23product/22
。
我正在尝试使用重写 URL 的 htaccess 规则来更正此问题:
RewriteEngine On
RewriteRule ^(.*)%23(.*)$ /$1#$2 [L,R=301,NE]
但它似乎不起作用,我该怎么办?
答案1
这RewriteRule
图案与 %-decoded URL 路径匹配。因此,如果请求的 URL 包含%23
(URL 编码的#
),则需要#
匹配RewriteRule
图案。否则,您的重定向似乎没问题。
例如:
RewriteRule ^(.*)#(.*)$ /$1#$2 [L,R=301,NE]
NE
这里需要( )标志noescape
,以#
防止代换在重定向响应中进行 URL 编码。
测试前清除浏览器缓存。并使用 302(临时)重定向进行测试以避免缓存问题。
答案2
# 以及其后的所有内容都不应与请求一起发送。
这只是为了链接到命名的标签