2012-09-14 75 views
4

出于某种原因,当我header("Location")重定向新的页面保持哈希值。重定向是保持哈希

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

我重定向与

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

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

这究竟是为什么以及如何我停止吗?即example.com/account.html


注:

我使用一个.htaccess重定向到file.htmlfile.php

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

回答

4

简单的回答“我怎么阻止它”是指定一个空的哈希在Location标头中:

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

然而,这种行为并不能保证全面。它似乎可以在我的快速测试中用于WebKit和IE9。尽管如此,你已经无意中发现了black hole in the HTTP specification

+1

这并不在Firefox上运行 – machineaddict

1

我四处寻找答案,关于Firefox的作​​品。一会儿冲浪在这里和那里,而我的猫喵保持喵后,使我最终的解决方案:

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

有时你想保留的哈希,有时你不这样做,因为交叉浏览器很重要,所以最好控制客户端浏览器重新加载并杀死哈希。