【问题标题】:How do you change a URL in the address bar while loading the page?加载页面时如何更改地址栏中的 URL?
【发布时间】:2011-07-06 15:22:16
【问题描述】:

喜欢当你点击这个<a href='http://www.mysite.com/page.php?v=foo&z=bar'>

然后当页面加载完成后,地址栏中的 URL 应显示为 http://www.mysite.com/page.php ,无需查询。

就像当您尝试登录网络邮件时,您输入用户名和密码,他们使用查询字符串对吗?但是当页面加载完成后,URL 没有任何查询。

【问题讨论】:

  • 为什么要删除它?如果是敏感数据,则不应在查询字符串中使用。
  • URL 显示用户正在访问的位置。如果你想改变它,你需要重定向到一个新的位置。
  • 这就像当您尝试登录网络邮件时,他们使用查询字符串,但是当页面完成加载时,URL 没有任何查询
  • @webbiedave:重定向?所以如果不重定向就无法完成?
  • 良好的缓存 + 观察者 github.com 和新的 youtube.com

标签: php javascript .htaccess


【解决方案1】:

我的理解是,当我们更改地址栏的 URL 时,Web 浏览器会在不刷新页面的情况下触发请求,即我猜是 204。

如果您不希望元素显示在 URL 用户中,请使用带有 post 方法的 HTML 表单

<form action="page.url" method="post">
<input type="hidden" name="param_name" value="value"/>
</form>

【讨论】:

    【解决方案2】:

    这是您可以采用的策略...从用户体验的角度来看,我认为这并不是很好,但它可以实现您的目标:

    1. 在首次加载时处理查询字符串参数并将它们存储在会话数组中 ($_SESSION)
    2. 重定向到没有查询字符串参数的同一页面
    3. 对现在存储在$_SESSION 中的参数值做任何你需要做的事情

    就像我说的那样,我不认为这是一个壮观的方法,而且它具有潜在的副作用,您必须在代码中处理,这似乎不值得痛苦。此外,即使使用这种方法,包含查询字符串参数的 URL 也会出现在客户端的浏览历史记录中,因此您最终并没有真​​正隐藏任何内容(假设这是您的目标)。

    要考虑的另一种方法是对您的请求使用 POST 方法而不是 GET 方法。您只需将参数作为请求的有效负载而不是在查询字符串中传递。

    【讨论】:

    • 我不认为存储到会话和重定向是一个好主意,因为我试过了,页面加载完成后页面重新加载。
    【解决方案3】:

    最好的方法是使用 htaccess。 此文件通常与索引文件一起位于您网站的根目录中。

    您的 htaccess 文件必须以:

    Options +FollowSymlinks
    RewriteEngine on
    

    然后您需要做的就是(对于您使用的示例):

    RewriteRule ^page.php page.php?v=$1&z=$2
    

    有关 htaccess 的更多信息:http://corz.org/serv/tricks/htaccess.php

    【讨论】:

      【解决方案4】:

      在不重新加载页面的情况下更改 URL 的唯一方法是更改​​位于 after 的内容为 # 字符。

      在它之前发生的任何变化都会导致页面重新加载。

      【讨论】:

      • 加载,你是怎么做到的?
      • 抱歉,我没听懂?什么问题?
      【解决方案5】:

      请参阅HTML5's pushState 并将其与使用 AJAX 加载的内容一起使用。 请注意,维护起来可能非常复杂,并且除了最新的浏览器之外,并非所有浏览器都支持。

      使用它的网站示例:http://www.shopify.com/tour/website-design

      【讨论】:

        猜你喜欢
        • 2014-03-20
        • 2016-06-08
        • 2012-11-05
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多