重定向保持哈希

Posted

技术标签:

【中文标题】重定向保持哈希【英文标题】:redirect is keeping hash 【发布时间】:2012-09-08 01:44:49 【问题描述】:

由于某种原因,当我使用 header("Location") 重定向时,新页面会保留哈希。

所以如果你在example.com/index.html#signup

我使用重定向

header("Location: /account.html");
exit;

然后它显示example.com/account.html#signup

为什么会发生这种情况,我该如何阻止它?即example.com/account.html


注意:

我正在使用 .htaccess 将 file.html 重定向到 file.php

RewriteRule ^([a-zA-Z0-9-_.]+)\.html$ $1.php [L]

【问题讨论】:

【参考方案1】:

“如何阻止它”的简单答案是在 Location 标头中指定一个空哈希:

header('Location: /account.html#');

但是,这种行为并不能得到全面保证。在我的快速测试中,它似乎适用于 WebKit 和 IE9。不过,您偶然发现了black hole in the HTTP specification。

【讨论】:

【参考方案2】:

我正在寻找适用于 Firefox 的答案。在我的猫不停地喵喵叫的时候到处冲浪,这让我找到了最终的解决方案:

die('<script> window.location='your-url-without-hash';</script>');

有时你想保留哈希,有时你不想,因为跨浏览器很重要,所以最好控制客户端浏览器重新加载并终止哈希。

【讨论】:

以上是关于重定向保持哈希的主要内容,如果未能解决你的问题,请参考以下文章

java重定向时如何保持地址栏不变

laravel - 登录重定向丢失 url 哈希

使用哈希部分(锚)重定向 301 #

.htaccess 使用哈希重定向到子域 url

将哈希 URL 重定向到标准 URL

如何在 Angular js 中禁用哈希重定向