Php 我怎么能藏起来!在浏览器地址栏上?

Php 我怎么能藏起来!在浏览器地址栏上?,php,javascript,ajax,mod-rewrite,browser,Php,Javascript,Ajax,Mod Rewrite,Browser,假设我有以下链接: www.blahblah.com/#!?page=index 如何将其转换为以下内容之一: hashString = window.location.hash.substring(8); window.location = 'http://www.blahblah.com/'+hashString; www.blahblah.com/#/索引(此索引应使用mod_rewrite制作) www.blahblah.com/ajax/index(仍然修改,但被ajax替换)

假设我有以下链接:

www.blahblah.com/#!?page=index
如何将其转换为以下内容之一:

hashString = window.location.hash.substring(8);
window.location = 'http://www.blahblah.com/'+hashString;
  • www.blahblah.com/#/索引
    (此索引应使用mod_rewrite制作)
  • www.blahblah.com/ajax/index
    (仍然修改,但被ajax替换)
  • www.blahblah.com/index
    (页面将加载类似facebook的AJAX,但#!将被隐藏)
有人能给我举个例子说明上面的每一个问题吗


非常感谢

模块重写只会更改服务器看到的内容。模块重写无法更改本地浏览器看到的内容,这就是js正在运行的地方


Facebook加载的方式是通过请求新页面的内容,然后更新窗口URL,而不必重新加载所有内容。这样,如果一个项目需要共享或链接,那么链接与他们实际查看的内容都是最新的,因此当页面重新加载时,浏览器将加载服务器请求的实际完整php页面

ajax页面加载策略中的隐藏由html5pushstate完成

在javascript中,您可以使用
window.location.hash

哈希(
#
)之后的任何内容都不会发送到服务器,因此无法在服务器端读取。但是,您可以使用JavaScript重定向用户。您要查找的信息将存储在变量
window.location.hash

在页面加载时,您可以执行以下操作:

hashString = window.location.hash.substring(8);
window.location = 'http://www.blahblah.com/'+hashString;

我们正在使用
子字符串
删除前八个字符(
#!?page=
),因此我们将剩下
索引

来吧,伙计们,这不是一个坏问题,尽管使用mod#u rewrite的前提是有缺陷的。仔细看,为什么人们对这件事投了反对票呢?
octothorpe后面的东西叫做路径片段。服务器和mod_rewrite都不会看到它。它必须在客户端处理。@Kristianantosen:真的吗?他希望他给出的第一个URL在地址栏中以不同的方式显示。我完全理解他想做什么;我只是不确定在这种情况下最好的做法是什么。当你加载像
www.blahblah.com/#!?page=index
浏览器将向服务器发送
www.blahblah.com/
请求。它在散列之后不会发送任何内容,因此您不能使用PHP或mod_rewrite来处理它。您唯一的实际选择是使用javascript处理哈希,并重定向到其他URL。但是javascript不可靠,速度慢。基本上,你应该避免在URL中使用#,除非是为了一些琐碎的事情(比如滚动到页面上的某个特定点,或者激活页面上某个特定的“标签”)