Javascript 在PHP中,如何将页面重定向到没有散列(#)的URL?
前言: 我的地址如下:Javascript 在PHP中,如何将页面重定向到没有散列(#)的URL?,javascript,php,.htaccess,redirect,Javascript,Php,.htaccess,Redirect,前言: 我的地址如下: http://www.example.com/#contact http://www.example.com/thanks 成功提交联系人表单后,用户将重定向到以下地址: http://www.example.com/#contact http://www.example.com/thanks 借助以下代码: // Redirect to thank you page redirect_to("thanks"); 函数redirect_to()定义为: // P
http://www.example.com/#contact
http://www.example.com/thanks
成功提交联系人表单后,用户将重定向到以下地址:
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
如果我将页面重定向到谢谢
,那么部分#contact
如何与主URL保持一致
我们如何通过htaccess或PHP甚至通过JS排除/删除它?这个问题以前被问过 标记为答案的回答是: “如何停止”的简单答案是在Location标头中指定一个空哈希:
header('Location:/account.html#')代码>
然而,这种行为并不能保证一刀切。在我的快速测试中,它似乎在WebKit和IE9中工作。尽管如此,您还是在HTTP规范中发现了一个黑洞
这个问题以前被问过
标记为答案的回答是:
“如何停止”的简单答案是在Location标头中指定一个空哈希:
header('Location:/account.html#')代码>
然而,这种行为并不能保证一刀切。在我的快速测试中,它似乎在WebKit和IE9中工作。尽管如此,您还是在HTTP规范中发现了一个黑洞
你的解决方案在firefox中不起作用。你的解决方案在firefox中不起作用。首先,没有人像我这样问得那么清楚。不是吗?第二,你提到的解决方案是不可接受的,因为我尝试过,它根本不起作用。它在url的末尾添加了不必要的#。这有什么意义吗?在我看来,这只是一个变通办法,不是一个好的解决方案。但这就是我找到的解决方案,至少在2013年,他们声称这是一个“HTTP规范中的黑洞”。也许你不得不接受它,除非有人有更优雅的解决方案。实际上,试试这里的解决方案,其中一个可能会有帮助:好的,我稍后再试试。但没人告诉我这是怎么回事?片段是如何与主URL组成后缀的?首先,没有人像我这样清楚地问过它。不是吗?第二,你提到的解决方案是不可接受的,因为我尝试过,它根本不起作用。它在url的末尾添加了不必要的#。这有什么意义吗?在我看来,这只是一个变通办法,不是一个好的解决方案。但这就是我找到的解决方案,至少在2013年,他们声称这是一个“HTTP规范中的黑洞”。也许你不得不接受它,除非有人有更优雅的解决方案。实际上,试试这里的解决方案,其中一个可能会有帮助:好的,我稍后再试试。但没人告诉我这是怎么回事?片段如何与主URL组成后缀?