可能重复:
What’s the shebang/hashbang (#!) in Facebook and new Twitter URLs for?
我在几个使用Ajax请求加载页面的基于Web的应用程序中看到,他们在网址后使用#!
而不是#
。例如:/boo.php#!Projects
而不是/boo.php#Projects
。
我想知道,是否有任何技术原因可以这样做?
答案 0 :(得分:1)
这是因为hashbang / shebang(#!
)是用于索引AJAX页面的Googles方案:
当您的网站采用该方案时,它将被视为“AJAX 可抓取。“这意味着抓取工具会看到您的内容 应用程序,如果您的网站提供HTML快照。
有关Google Developers的更多信息。
答案 1 :(得分:1)
这被称为" hashbang"。它被Google用于索引基于Ajax的网站。更多信息 - http://www.fakingfantastic.com/2011/02/09/using-hash-bangs-in-your-urls/
答案 2 :(得分:1)
目的是使AJAX页面可被抓取,例如谷歌。
通常,URL中哈希后面的所有内容与爬虫无关,并且根本不会发送到服务器。在AJAX应用程序中,它过去常被用于“模拟”浏览器地址栏中的真实URL(人们现在通常使用history.pushState
)。
为了解决不执行完整JavaScript应用程序的限制,Google发明了一种协议,该协议基本上表明如果遇到包含像
这样的hashbang的URLhttp://example.com/foo#!key=value
它可以将其转换为
http://example.com/foo?_escaped_fragment_=key=value
并将其发送到服务器。然后,服务器将返回页面的表示,因为它将在JavaScript应用程序中显示。最后,让这些应用程序可以抓取只是一种约定。
有关详细信息,请参阅Google的documentation on the topic。