如何删除#!来自URL

时间:2014-05-07 10:04:13

标签: javascript url url-rewriting

我想改变

http://domain.co.uk/#!/pagename

http://domain.co.uk/pagename

我正在考虑重新编写URL,然后意识到因为它是一个单页网站,所以这不起作用,所以我被卡住了!

有没有办法在给定现有代码库(一个快速的javascript函数?)的情况下做到这一点?或者它只是我必须要忍受的东西?

!我猜测后者(我可以改为更改为domain.co.uk #pagename)但我很高兴被证明是错的!

1 个答案:

答案 0 :(得分:1)

基础很简单:

if (location.hash && (location.hash.substr(1,1) === "!")) {
    location.replace(location.toString().replace('#!', "/"));
};

您只需要确保新网址首先运行。

这意味着:

  1. 更新客户端代码以使用pushState和friends(因此您停止生成hashbang URI)
  2. 更新服务器端代码,以便它可以在不依赖客户端代码的情况下以正确的状态传递站点的每个页面(以便(a)任何页面可以快速有效地加载,以及(b)JavaScript成为性能提升奖金而非搜索引擎讨厌依赖)