如何在不浏览页面的情况下更改浏览器中的URL?

我现在正在编写一个复杂的AJAX应用程序,整个站点都有干净的URL。 目前,PHP为每个页面创建了基本布局,但是当用户点击链接时我不想离开每个页面,我不希望在URL中有哈希,因为它赢了“与网站的其余部分相适应。 我知道这在网站之前已经出现了负载并且似乎很常见,但我想知道是否有一种简洁的HTML5方式只是在地址栏中出现更改URL,即使它在技术上保持相同页。

您可以使用history.pushState执行此操作,但仅限于支持它的浏览器。 只需在浏览器JavaScript-Console中尝试以下行。

 history.pushState({},"URL Rewrite Example","https://stackoverflow.com/example") 

更多关于pushState()方法的内容(Mozilla Developer)

类似的问题如何使用JavaScript在不加载新页面的情况下更改浏览器中的URL?

正如其他人所说,HTML5的history.pushstate是要走的路。 尝试在github上浏览一个repo以查看它的运行情况( https://github.com/visionmedia/express )。

麻烦是IE的唯一支持history.pushstate的版本是IE10,有点糟糕。

很多网站都使用hashbang#! URL之类的Twitter(例如https://twitter.com/#!/Sironfoot )。 hashbang是搜索引擎同意的URL模式,因此他们仍然可以搜索和索引Ajax主导的网站(更多信息请访问http://code.google.com/web/ajaxcrawling/docs/specification.html ),所以你可以走那条路。

唯一的另一种方法是将history.pushstate用于支持它的浏览器,并回退到非支持浏览器的整页刷新。