我试图将一次性损坏限制重定向到网站页面上的锚点。在一些宣传材料中发布了错误的网址,如下所示:
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一直传递给用户的浏览器吗?
提前致谢!
答案 0 :(得分:0)
当服务器处理RewriteRule
时,它基本上会在内部更改要访问的资源,而不会被浏览器注意到。
更改浏览器中URL的唯一方法是使用重定向标志。这将使Web服务器发送带有302
标头的HTTP Location
响应,这将导致浏览器更改URL并请求新页面。这个新URL可以包含一个锚。
在您的情况下,以下规则应该有效:
RewriteRule A/B https://mydomain.org.uk/A.php#B [NE,R,L]
请注意,锚点是一种浏览器功能,因此它们通常不会发送到服务器,因此既不会出现在访问日志中,也不能用于RewriteRule
。