【问题标题】:mod_rewrite rule for anchors锚点的 mod_rewrite 规则
【发布时间】:2011-06-11 20:00:09
【问题描述】:

我想将 url 重写为带有锚点的 url

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 的元素!

【问题讨论】:

    标签: mod-rewrite anchor


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我以为我可以用 mod_rewrite 做所有事情;)我现在将重定向到 topic.php?id=1&a=32 然后使用 javascript 将焦点设置为锚点! (地址栏看起来像我想要的:topic/1/32)
    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2012-05-13
    相关资源
    最近更新 更多