我在几个使用 Ajax 请求加载页面的基于 Web 的应用程序中看到,它们#!
在 urls 之后使用而不是#
. 例如:/boo.php#!Projects
而不是/boo.php#Projects
.
我想知道,这样做是否有任何技术原因?
我在几个使用 Ajax 请求加载页面的基于 Web 的应用程序中看到,它们#!
在 urls 之后使用而不是#
. 例如:/boo.php#!Projects
而不是/boo.php#Projects
.
我想知道,这样做是否有任何技术原因?
这是因为 hashbang/shebang ( #!
) 是 Google 用于索引 AJAX 页面的方案:
当您的网站采用该方案时,将被视为“AJAX 可抓取”。这意味着如果您的网站提供 HTML 快照,爬虫将看到您的应用程序的内容。
更多关于谷歌开发者的信息。
这被称为“hashbang”。Google 使用它来索引基于 Ajax 的网站。那里有更多信息 - http://www.fakingfantastic.com/2011/02/09/using-hash-bangs-in-your-urls/
目的是使 AJAX 页面可以被 Google 等抓取。
通常,URL 中散列后面的所有内容都与爬虫无关,根本不会发送到服务器。在 AJAX 应用程序中,它曾经被大量用于“模拟”浏览器地址栏中的真实 URL(现在人们通常使用history.pushState
.
为了解决不能执行完整 JavaScript 应用程序的限制,Google 发明了一种协议,该协议基本上规定如果遇到包含类似 hashbang 的 URL
http://example.com/foo#!key=value
它可以将其转换为
http://example.com/foo?_escaped_fragment_=key=value
并将其发送到服务器。然后,服务器应返回页面的表示,就像它在 JavaScript 应用程序中显示的那样。最后,让这些应用程序可抓取只是一个惯例。
有关详细信息,请参阅Google提供的有关该主题的文档。