Apache .htaccess重定向到锚点

时间:2018-03-17 23:36:33

标签: .htaccess anchor

我试图将一次性损坏限制重定向到网站页面上的锚点。在一些宣传材料中发布了错误的网址,如下所示:

https://mydomain.org.uk/A/B

当我真正想要发布的是

https://mydomain.org.uk/A#B

看了一些其他答案后,似乎任何带锚的重定向都需要是一个绝对的URL。所以我把它放在我的.htaccess中:

RewriteRule A/B https://mydomain.org.uk/A.php#B [NE,L]

(注意,.php是正确的,A.php是页面文件)。而它根本不起作用。浏览器只需加载A.php并从顶部显示它。

我知道规则模式是匹配的,因为如果我使目标成为一个完全不存在的页面,我会按预期得到404.

不幸的是,我的网络托管服务并没有让我使用Apache日志,所以很难追查到底出了什么问题。任何人都可以指导我如何正确地进行重写,以便将#anchor一直传递给用户的浏览器吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

当服务器处理RewriteRule时,它基本上会在内部更改要访问的资源,而不会被浏览器注意到。

更改浏览器中URL的唯一方法是使用重定向标志。这将使Web服务器发送带有302标头的HTTP Location响应,这将导致浏览器更改URL并请求新页面。这个新URL可以包含一个锚。

在您的情况下,以下规则应该有效:

RewriteRule A/B https://mydomain.org.uk/A.php#B [NE,R,L]

请注意,锚点是一种浏览器功能,因此它们通常不会发送到服务器,因此既不会出现在访问日志中,也不能用于RewriteRule

相关问题