如何在加载页面时更改地址栏中的URL?

时间:2011-07-06 15:22:16

标签: php javascript .htaccess

比如点击此<a href='http://www.mysite.com/page.php?v=foo&z=bar'>

然后当页面加载完毕后,地址栏中的网址应该显示为http://www.mysite.com/page.php而不显示查询。

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

5 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

更改网址而不重新加载网页的唯一方法是更改​​after #字符的内容。

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

答案 2 :(得分:0)

这是一个你可以采用的策略......我认为从UX的角度来看它确实很棒,但它实现了你的目标:

  1. 首次加载时处理查询字符串参数,并将它们存储在会话数组($_SESSION
  2. 重定向到同一页面w / out查询字符串参数
  3. 您需要对现在存储在$_SESSION
  4. 中的参数值执行任何操作

    就像我说的那样,我认为这不是一个引人注目的方法,并且它会带来你在代码中必须处理的潜在副作用,这似乎不值得痛苦。此外,即使使用此方法,包含查询字符串参数的URL也会显示在客户端的浏览历史记录中,因此您最终并未隐藏任何内容(假设这是您的目标)。

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

答案 3 :(得分:0)

这样做的最好方法是使用htaccess。 此文件通常位于您网站的根目录下以及索引文件。

您的htaccess文件必须以:

开头
Options +FollowSymlinks
RewriteEngine on

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

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

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

答案 4 :(得分:0)

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

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