锚点的mod_rewrite规则

时间:2011-06-10 10:25:27

标签: mod-rewrite anchor

我想将网址重写为带有锚点的网址

from "topic/14/599" to "topic.php?id=14#599"

这是我目前的重写:

RewriteRule ^topic/([0-9]+)/([0-9]+)$ /topic.php?id=$1#$2 [NE,L,R]

这很好用,但重写的规则在地址栏中! 所以浏览器的地址栏从“topic / 14/599”变为“topic.php?id = 14#599”

我更喜欢在地址栏中保留“简化”版本,但是如果没有L,R标志,重写器就无法工作,我只是无法让它工作。 (如果我只是将topic / 14重写为topic.php?id = 14,没有任何标记就可以正常工作)

更新

RewriteRule ^topic/([0-9]+)/([0-9]+)$ topic.php?id=$1&a=$2 [NE]

现在有效!地址栏向用户显示如下:mydomain.com/topic/14/599 并在内部将其重定向到topic.php?id = 14& a = 599,一旦页面加载,javascript将跳转到id = 599的元素!

1 个答案:

答案 0 :(得分:2)

由于在客户端处理锚点,因此无法像您尝试的那样“静默地”重写锚点 - 锚点必须在某个时刻位于用户可见的URL中。您可以将topic/14/244重写为topic/14#244作为重定向,并在topic/14内部重写topic.php?id=14,但您不能一步完成这两项任务。