假设我有以下链接:
www.blahblah.com/#!?page=index
如何将其转换为以下之一:
www.blahblah.com/#!/index
(这个应该用mod_rewrite制作)www.blahblah.com/ajax/index
(仍为mod_rewrite,但#!替换为ajax)www.blahblah.com/index
(该页面将加载像facebook这样的AJAX,但#!将被隐藏)有人能举例说明上述每个问题吗?
非常感谢!
答案 0 :(得分:3)
哈希(#
)之后的任何内容都没有发送到服务器,因此您无法在服务器端读取它。但是,您可以使用JavaScript重定向用户。您要查找的信息将存储在变量window.location.hash
。
在页面加载时,您可以执行以下操作:
hashString = window.location.hash.substring(8);
window.location = 'http://www.blahblah.com/'+hashString;
我们正在使用substring
删除前八个字符(#!?page=
),因此我们将留下index
。
答案 1 :(得分:1)
模块重写仅更改服务器看到的内容。模块重写不能,改变本地浏览器看到的内容,即运行js的位置。
Facebook加载的方式是通过请求新页面的内容,然后更新窗口URL而不必重新加载所有内容。这样就完成了,所以如果一个项目需要共享或链接,那么链接与他们实际查看的内容都是最新的,所以当页面重新加载时,浏览器会加载实际的完整php页面,请求从服务器。
答案 2 :(得分:1)
ajax页面加载策略中的隐藏#由HTML 5 pushState完成。
答案 3 :(得分:0)
在javascript中,您可以使用window.location.hash
。