Mod rewrite 如何重定向到包含锚(#)的url?
我需要获取标准的传入URL,并重写重定向它们到单个页面上的目标特定锚(传入html页面名称成为锚名称)。例如,规则如下:Mod rewrite 如何重定向到包含锚(#)的url?,mod-rewrite,encoding,url-rewriting,Mod Rewrite,Encoding,Url Rewriting,我需要获取标准的传入URL,并重写重定向它们到单个页面上的目标特定锚(传入html页面名称成为锚名称)。例如,规则如下: RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R] 所以这个url: http://foo.com/files/bar.html …将成为: http://foo.com/test.html#bar 规则本身工作正常,但#字符在浏览器地址栏中编码为: http://foo.com/test.html
RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [R]
所以这个url:
http://foo.com/files/bar.html
…将成为:
http://foo.com/test.html#bar
规则本身工作正常,但#字符在浏览器地址栏中编码为:
http://foo.com/test.html%23bar
当然,它不能作为锚正常工作。有没有办法在.htaccess中强制它不编码散列?我也尝试过像\\\
那样转义它,但这没有什么区别。尝试规则中的noescape(NE)标志:
RewriteRule ^files/([a-zA-Z0-9\-_]+)\.html$ /test.html#$1 [NE, R]
使用
NE
,或不使用转义标志:
RewriteRule^files/([a-zA-Z0-9\-\\+)\.html$/test.html\\$1[NE,R]
帕特以57秒的优势击败了我;)让世界知道SO的“新答案”警告需要更长的时间!太棒了,谢谢。我觉得应该是简单的,但谷歌没有给我指路;)