PHP 重定向而不保存在历史记录中

问题描述 投票:0回答:2

下午好!问题出现了。我正在使用 PHP。用户访问 example.com/in/,脚本重定向到 http://example.com/ (使用 header("Location: ...") ;)。如何避免将 example.com/in/ 保存在浏览器历史记录中?

php redirect browser
2个回答
3
投票

我和你遇到了同样的问题,这就是我发现的:

PHP:

php 中没有这样的函数,尽管有一种方法可以替换 php 中以前的类似标头,但我不认为这就是您要找的! (php手册)

Javascript:

有几种函数和方法可以直接或间接操作浏览器历史记录:

  • 您可以使用
    window.location.replace("http://...")
    重定向用户,而不将当前页面保存到浏览器历史记录中
  • window.history.back()
    将用户重定向到浏览器历史记录中的后一页(其作用与浏览器的后退按钮完全相同)
  • window.history.forward()
    与 window.history.back() 相同,但向前
  • window.history.go(index)
    从会话历史记录中加载特定页面,使用其在会话历史记录中的相对位置作为索引(当前页面的索引为0)
  • 有关使用
    history.replaceState()
    history.pushState()
    操作浏览器历史记录的更多信息,请阅读 this

回答您的问题:

根据您正在做什么,您可以使用这些 js 方法之一。不幸的是,如前所述,如果我没记错的话,PHP 中没有这样的东西。


0
投票

虽然此页面在谷歌结果中弹出的位置相当高,但这个问题已在其他地方得到回答,建议先发送 301 标头,然后发送位置标头。

发送 301 标头。 header('HTTP/1.1 301 永久移动');

2000 年代的 IIRC Mozilla 规范提到不会在历史记录中存储 301,现在我相信 Chrome 不会在历史记录中存储与用户交互无关的位置更改。

话虽这么说,javascript选项可能更适合您的需求(您阅读本文的人,因为OP可能很久以前就解决了他们的问题)。

© www.soinside.com 2019 - 2024. All rights reserved.