可能重复:
What’s the shebang/hashbang (#!) in Facebook and new Twitter URLs for?为什么使用#!而不是#在Ajax请求中?
我在使用Ajax请求的页面加载一些基于Web的应用程序中看到,他们使用#!
的网址,而不是#
后。例如:/boo.php#!Projects
而不是/boo.php#Projects
。
我想知道,有没有这样做的技术理由?
可能重复:
What’s the shebang/hashbang (#!) in Facebook and new Twitter URLs for?为什么使用#!而不是#在Ajax请求中?
我在使用Ajax请求的页面加载一些基于Web的应用程序中看到,他们使用#!
的网址,而不是#
后。例如:/boo.php#!Projects
而不是/boo.php#Projects
。
我想知道,有没有这样做的技术理由?
其目的是使AJAX页面可以被抓取。谷歌。
通常情况下,网址中的散列背后的所有内容都与抓取工具无关,并且根本不会发送到服务器。在AJAX应用程序中,它过去主要用于在浏览器地址栏中“模拟”真实的URL(现在人们通常使用history.pushState
)。
恢复过来不是强麦执行完整的JavaScript应用程序的限制,谷歌发明了基本规定,如果遇到包含hashbang一个URL像
http://example.com/foo#!key=value
它可以将其转化为
协议http://example.com/foo?_escaped_fragment_=key=value
并将其发送到服务器。然后,服务器将返回页面的表示形式,因为它将在JavaScript应用中显示。最后,这只是一个让这些应用可抓取的惯例。
有关更多信息,请参阅Google的documentation on the topic。
这是因为hashbang /认领(#!
)是用于索引AJAX页面谷歌计划:“AJAX 抓取”
当您的网站采用了该方案,将被视为这意味着如果您的网站提供HTML快照,抓取工具将会看到您的 应用的内容。
有关Google Developers的更多信息。
这被称为“hashbang”。 Google使用它来对基于Ajax的网站进行索引。有更多的信息 - http://www.fakingfantastic.com/2011/02/09/using-hash-bangs-in-your-urls/
http://stackoverflow.com/q/3009380 –