使用哈希标签时防止页面重定向

Posted

技术标签:

【中文标题】使用哈希标签时防止页面重定向【英文标题】:Prevent page redirect when using hash tag 【发布时间】:2011-09-09 08:26:18 【问题描述】:

有没有办法将页面重定向到特定的哈希值,但如果页面重新加载时已经存在哈希值,则会阻止重定向?最好用javascript

例如:

输入 www.mysite.com 会重定向到 ---> www.mysite.com/index.html#news

然后用户单击一个链接,该链接导航到同一页面下方的新位置:www.mysite.com/index.html#articles

我想要的是在刷新时阻止重定向,这样如果用户刷新页面,他们就会留在#articles,而不是被重定向回#news。

基本上,重定向的唯一目的是仅当输入的 url 没有使用哈希 (#) 时,才会将人们带到 #news。

【问题讨论】:

【参考方案1】:

您可以检查window.location.hash 属性并根据其值设置位置href。例如:

<script type="text/javascript">
  // Redirect to "#news" if there is no hash in the URL.
  if (window.location.hash == '') 
    window.location.href = 'http://www.mysite.com/index.html#news';
  
</script>

顺便说一句,您似乎可以使用window.locationdocument.location,它们似乎可以做同样的事情。 It is unclear which is the preferred target(窗口或文档)。

【讨论】:

【参考方案2】:

锚重定向是一种仅限客户端的结构。服务器完全不知道有人点击了“#articles”这一事实——而且当他们这样做时,URL 不会改变,所以刷新总是会让你回到让你到达那里的同一个 URL。

解决方案是在他们单击锚链接时重写 URL。您可以通过分配给window.location.href 来更改它。因此,将点击处理程序添加到任何哈希锚,并更改 URL 以包含新的页内锚标记。

【讨论】:

以上是关于使用哈希标签时防止页面重定向的主要内容,如果未能解决你的问题,请参考以下文章

laravel - 登录重定向丢失 url 哈希

当 URL 中包含句点的哈希值 (#) 时,IIS 将重定向到 404 错误页面

有没有办法使用 React Router 重定向到默认的 url 哈希?

React-Router如何防止重定向

如何防止显示感谢页面,但从 PayPal 重定向除外

防止 Nuxt 身份验证重定向到 400 状态