如何使用htaccess将url重写为html锚标记(#)

Lee*_*e L 16 .htaccess mod-rewrite uri-fragment

我有一种情况,我想采取以下URL:

/ 1 /约翰

并使用Apache的htaccess文件进行重定向

/page.php?id=1&name=john#john

所以它转到一个名为john的html锚点.

我发现了很多关于转义特殊字符的引用,并添加了[NE]标志,以便重定向忽略#符号,但这些不起作用.例如,添加[NE,R]表示该网址仅作为原始网址显示在浏览器地址中:http://example.com/page.php?id = 1&name = john#john.

小智 23

这可以使用[NE]标志(noescape).

默认情况下,特殊字符(例如&和?)将转换为其等效的十六进制代码.使用[NE]标志可防止发生这种情况.

更多信息http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_ne


Ton*_*nas 6

您可以执行其中一项操作,但不能同时执行两项操作。

您可以使用 [NE] 标志向 Apache 表示不要转义“#”字符,但为了使重定向正常工作,您必须指定要重定向到的绝对 URL,而不仅仅是相对页面。Apache 无法为您将窗口向下滚动到锚点。但如果您重定向到绝对 URL,浏览器就会这样做。


nik*_*org 0

您无法对锚点进行内部重定向。(想一想:Apache 如何向下滚动到锚点?)您的链接应该指向/1/john#john. 锚点不是请求 uri 的一部分。