3

我们的代理机构建立了一个动态网站,该网站使用了大量的 AJAX 交互和 #! (hashbang) 网址:http ://www.gunlawsbystate.com/

这是一本很长的书,您可以滚动浏览,地址栏中的 URL 会动态变化。我们必须支持 IE,所以请不要建议使用 pushState - hansbang 是我们目前唯一的选择。

左侧边栏中有一个导航,其中包含指向本书所有章节的链接。

链接示例: http ://www.gunlawsbystate.com/#!/federal-properety/national-parks-and-wildlife-refuges/

我们期待谷歌抓取这个:http://www.gunlawsbystate.com/?_escaped_fragment_=/federal-properety/national-parks-and-wildlife-refuges/ 这是该部分的完整 html 快照。(+ 有指向 www.gunlawsbystate.com/#!/federal-properety/national-parks-and-wildlife-refuges/ii-change-in-the-law/ => www.gunlawsbystate.com/ 等小节的链接?_escaped_fragment_=/federal-properety/national-parks-and-wildlife-refuges/ii-change-in-the-law/)。

根据 Google 的规范(developers.google.com/webmasters/ajax-crawling/docs/specification),这一切看起来都是完整的。该网站目前运行约 3 个月。主页每 10-15 天重新编入索引。

问题在于,由于某种原因,Google 无法正确抓取 hashbang URL。看起来谷歌只是“不喜欢”这些网址。

www.google.ru/search?&q=site%3Agunlawsbystate.com :只有 67 个页面被编入索引。请注意,Google 索引的大多数页面都有“正常”的 URL(主要是 wordpress 博客文章、类别和标签),只有 5-10% 的结果页面是 hashbang URL,尽管有 400 多个具有独特内容的书籍部分 Google 应该真的很喜欢它是否正确爬行。

有人可以给我一个建议,为什么谷歌不能正确抓取我们的书页?任何帮助将不胜感激。

PS 对于不可点击的链接,我很抱歉——stackoverflow 不允许我发布超过 2 个链接。

UPD。该站点地图已在不久前提交给谷歌。谷歌网站管理员工具说,提交了 518 个 URL,只有 62 个 URL 被编入索引。此外,在网站管理员工具的“索引状态”页面上,我看到有 1196 个页面曾经爬过;1071 页未选中。它清楚地指出,由于某种原因,谷歌没有索引 #! 它经常访问的页面。

4

2 回答 2

0

你错过了一些东西。首先,您需要一个元标记来告诉 google 可以通过不同的 url 访问哈希 URL。

<meta name="fragment" content="!">

接下来,您需要将每个 url 的映射版本提供给 googlebot。

当谷歌访问时:

http://www.gunlawsbystate.com/#!/federal-regulation/airports-and-aircraft/ii-boarding-aircraft/

它将改为爬行:

http://www.gunlawsbystate.com/?_escaped_fragment_=federal-regulation/airports-and-aircraft/i-introduction/

为此,您需要使用 PHP 或 ASP 之类的东西来提供正确的页面。如果您可以正确使用管道,则 Asp.net 路由也可以使用。有些服务实际上会为您创建这些“快照”版本,然后您的元标记将指向他们的服务器。

于 2014-02-25T18:47:31.953 回答
0

由于它已被 Google 弃用,现在 Google 无法访问 hashbang URL 下的内容。

根据研究,谷歌现在避免使用转义片段 URL,并建议创建单独的页面而不是使用 HashBang。

所以我认为 PushState 是在这种情况下可以使用的另一个选项。

于 2017-05-25T06:31:50.203 回答