重定向保持哈希
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>');
有时你想保留哈希,有时你不想,因为跨浏览器很重要,所以最好控制客户端浏览器重新加载并终止哈希。
【讨论】:
以上是关于重定向保持哈希的主要内容,如果未能解决你的问题,请参考以下文章