【问题标题】:How to redirect page to a URL without hash (#) in PHP? [duplicate]如何在 PHP 中将页面重定向到不带哈希 (#) 的 URL? [复制]
【发布时间】:2018-02-10 03:38:15
【问题描述】:

前言:

我在以下地址:

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 排除/删除它?

【问题讨论】:

  • 您的解决方案在 Firefox 中不起作用。

标签: javascript php .htaccess redirect


【解决方案1】:

之前有人问过这个问题。

redirect is keeping hash

标记为答案的响应是:

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

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

但是,这种行为并不能全面保证。在我的快速测试中,它似乎适用于 WebKit 和 IE9。然而,您偶然发现了 HTTP 规范中的一个黑洞。

【讨论】:

  • 首先,没有人像我一样问得这么清楚。不是吗?其次,您提到的解决方案是不可接受的,因为我尝试过它并且它根本不起作用。它在 url 的末尾添加了不必要的 #。这有意义吗?
  • 在我看来,这只是一种解决方法,而不是一个好的解决方案。但这是我找到的解决方案,至少在 2013 年,他们声称这是“HTTP 规范中的黑洞”。除非有人有更优雅的解决方案,否则您可能不得不忍受它
  • 其实,试试这里的解决方案,其中一个可能会有所帮助:stackoverflow.com/questions/16773111/…
  • 好的,我稍后试试。但是没有人告诉我它是如何表现的?片段部分如何以主 URL 为后缀?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多