js跳转的得到的url能重写吗

JavaScript022

js跳转的得到的url能重写吗,第1张

可能是我的要求没有写清楚,我做的url重写,这段js实现之后,地址栏中的url为www.xx.com/index.php?route=product/search&filter_name=a 我想实现的是当这段js实现之后,地址栏中的url为由原来的www.xx.com/index.php?route=product/search&filter_name=a变为www.xx.com/a.html,a为输入的文字。

URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。

如果浏览器不支持Cookie或用户阻止了所有Cookie,可以把会话ID附加在HTML页面中所有的URL上,这些页面作为响应发送给客户。这样,当用户单击URL时,会话ID被自动作为请求行的一部分而不是作为头行发送回服务器。这种方法称为URL重写(URL rewriting)。

一般来说,URL重写是支持会话的非常健壮的方法。在不能确定浏览器是否支持Cookie的情况下应该使用这种方法。然而,使用URL重写应该注意下面几点:

1.如果使用URL重写,应该在应用程序的所有页面中,对所有的URL编码,包括所有的超链接和表单的action属性值。

2.应用程序的所有的页面都应该是动态的。因为不同的用户具有不同的会话ID,因此在静态HTML页面中无法在URL上附加会话ID。

3.所有静态的HTML页面必须通过Servlet运行,在它将页面发送给客户时会重写URL。

HTML5 History API中提供了一些state相关方法:

history.pushState(data, title[, url])

history.replaceState(data, title[, url])

第一个参数用于提供state data,在用户点击后退,触发window.onpopstate时会提供此对象。

第二个参数用于重写页面标题,目前的浏览器都忽略此参数。

第三个参数用于重写url,仅重写最后一个url段的内容,就像题主提出的那样。

如果要修改url的话请提供第三个参数。