重定向到新网址,但从历史记录中删除以前的网址
Posted
技术标签:
【中文标题】重定向到新网址,但从历史记录中删除以前的网址【英文标题】:Make redirect to new url but remove previous from history 【发布时间】:2015-12-02 10:00:11 【问题描述】:如何用一个新的文档替换当前的 URL 文档但从文档历史记录中删除当前文档的 URL,这意味着无法使用“返回”按钮导航回到原始文档而不存储在浏览器历史列表中。
我可以通过 jQuery 或 javascript 通过
window.location.replace("newURL");
但我需要在 php.HOW 中这样做?
【问题讨论】:
“来自 PHP”是什么意思?你的意思是当初始页面加载时,你想重定向浏览器历史记录中没有原始页面的残余?还是您的意思是来自 ajax 调用? 加载初始页面时,我想在浏览器历史记录中不残留原始页面的情况下重定向 我认为一个简单的 302 重定向会做你想要的。原始 URL 不会出现在后退按钮列表中,但会出现在历史列表中(用于跟踪“访问过的”链接)。这应该是所有浏览器的工作方式。 我也不想出现在历史列表中,因为这个页面用于控制,我不想让任何人知道它 别以为你能做到。如果用户在浏览器中输入一个 URL 或单击该链接,它将在历史记录中。如果您不希望历史记录中包含 URL 参数,请使用表单 POST,因为表单内容不在历史记录中。此外,如果它是用户一开始就创建的可点击链接,那么你有点自欺欺人地认为这是一个秘密。 【参考方案1】:如果您在页面http://www.something.de/ 上执行<?php header('Location: http://www.abc.de/'); ?>
,则页面http://www.something.de/ 将不会在浏览历史记录中可见,用户也无法返回。这是你要求的吗?
【讨论】:
【参考方案2】:如果您根本不希望浏览器历史记录中的页面有任何残留,那么您不能将浏览器发送到那里,因为它会跟踪历史记录中所有访问过的页面,以便正确显示已访问过的链接。据我所知,没有办法阻止浏览器跟踪访问过的链接。如果您从服务器执行 302 位置重定向,则原始页面和重定向页面都将在浏览器历史记录中。原页面不会出现在后退按钮列表中,而是会出现在历史记录中。
如果您试图降低可见性的 URL 部分是 URL 的查询参数,那么您可以使用表单发布而不是常规页面加载,因为浏览器不会将表单参数存储在历史。
否则,您可能需要将您的 URL 与 Ajax 调用一起使用(因为它不会存储在历史记录中),然后使用客户端 window.location.replace(...)
转到最终 URL,这个想法是您的 URL不想公开共享永远不会是浏览器页面访问的 URL,而只是用于 Ajax 调用的 URL。
【讨论】:
【参考方案3】:它对我有用
<button onclick="goBack()"></button>
<script>
function goBack()
window.history.back();
window.location.replace('url');
</script>
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案4】:如果要清除上一页,请尝试使用“history.back();”然后设置你的 windows.location。
【讨论】:
以上是关于重定向到新网址,但从历史记录中删除以前的网址的主要内容,如果未能解决你的问题,请参考以下文章