使用 htaccess 重写 URL 编码的哈希字符

使用 htaccess 重写 URL 编码的哈希字符

我有一个单页网站,使用井号 (#) 访问不同页面。
问题是,一些 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

# 以及其后的所有内容都不应与请求一起发送。

这只是为了链接到命名的标签

相关内容