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

How do you change a URL in the address bar while loading the page?

本文关键字:地址栏 URL 何更改 加载      更新时间:2023-09-26

类似于单击此<a href='http://www.mysite.com/page.php?v=foo&z=bar'>

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

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

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

如果你不想在URL中显示元素,用户可以使用post方法的HTML表单

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

以下是您可以使用的策略。。。从用户体验的角度来看,我不认为它真的很棒,但它实现了你的目标:

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

正如我所说,我不认为这是一种壮观的方法,而且它会产生潜在的副作用,你必须在代码中处理,这似乎不值得付出代价。此外,即使使用这种方法,包含查询字符串参数的URL也会出现在客户端的浏览历史记录中,因此最终您不会真正隐藏任何内容(假设这是您的目标(。

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

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

您的htaccess文件必须以开头

Options +FollowSymlinks
RewriteEngine on

然后你所需要做的就是(对于你使用的例子(:

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

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

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

在此之前发生的任何更改都将导致页面重新加载。

请参阅HTML5's pushState,并将其与使用AJAX加载的内容一起使用。BEware,维护起来可能相当复杂,除了最新的浏览器外,其他浏览器都不支持它。

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