2017-09-01 72 views
0

前言:如何在PHP中将页面重定向到没有散列(#)的URL?

我在以下地址:

http://www.example.com/#contact 

成功联络表格提交后,用户会被重定向到以下地址:

http://www.example.com/thanks 

随着下面的代码帮助:

// Redirect to thank you page 
redirect_to("thanks"); 

功能redirect_to的()定义为:

// Page redirection 
function redirect_to($url) 
{ 
    if(isset($url) && $url != '') 
    { 
     header("Location: " . $url); 
     exit(); 
    } 
} 

的感谢页面htaccess的规则是:

# Thanks Page 
RewriteRule ^thanks/?$ thanks.php [QSA,L] 
#RewriteRule ^thanks/$ thanks.php [QSA,L] 

问题:

的问题是哈希(#)字符即片段部分仍然坚持URL:

http://www.example.com/thanks#contact 

如果我将页面重定向到thanks,那么#contact部分如何与主URL保持一致?

我们如何通过htaccess或PHP甚至通过JS排除/放弃它?

+0

您的解决方案在firefox中不起作用。 – user5307298

回答

1

之前询问过此问题。

redirect is keeping hash

标记为答案的反应是:

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

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

但是,这种行为并不能保证全面。它似乎可以在我的快速测试中用于WebKit和IE9。尽管如此,你已经无意中发现了HTTP规范中的黑洞。

+0

首先,没有人像我那样清楚地问过它。不是吗?其次,你提到的解决方案是不可接受的,因为我尝试了它,它根本不起作用。它在URL的末尾添加了不必要的#。这有任何意义吗? – user5307298

+0

在我看来,这只是一种解决方法,不是一个好的解决方案。但这是我找到的解决方案,至少在2013年,他们声称这是“HTTP规范中的黑洞”。可能你必须忍受它,除非有人有更优雅的解决方案 – Tore

+0

实际上,在这里尝试解决方案,其中一个可能有所帮助:https://stackoverflow.com/questions/16773111/removing-anchor-hash- from-url – Tore

相关问题