Hashbang URL 使网站难以被 Google 抓取?

Posted

技术标签:

【中文标题】Hashbang URL 使网站难以被 Google 抓取?【英文标题】:Hashbang URLs make the website difficult to crawl by Google? 【发布时间】:2012-07-22 06:26:12 【问题描述】:

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

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

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

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

我们希望 Google 能够抓取以下内容: 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 网址。看起来 Google 只是“不喜欢”这些 URL。

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

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

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

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

【问题讨论】:

您找到答案了吗?我有一个类似的问题,在这里描述:webmasters.stackexchange.com/questions/35355/… @Omeoe 我已经做了一些 SEO 增强,优化了页面的内容,将其放在代码中的侧边栏上方,还删除了 Wordpress 放入页面的 rel="canonical" 链接。另外,这是关于我发布的这个 AJAX 网站的另一个问题:webmasters.stackexchange.com/questions/34810/…。我确定您的问题大不相同。 未来参考:The syntax described by this page is no longer required, and will not be supported after the summer of 2018. 【参考方案1】:

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

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

接下来,您需要将每个网址的映射版本提供给 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 路由也可以使用。有些服务实际上会为您创建这些“快照”版本,然后您的元标记将指向他们的服务器。

【讨论】:

供将来参考:自从发布此答案以来,Google 已弃用此答案; webmasters.googleblog.com/2015/10/…【参考方案2】:

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

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

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

【讨论】:

以上是关于Hashbang URL 使网站难以被 Google 抓取?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌会将 hashbang/escaped_fragment 内容的正确 URL 编入索引吗

Hashbang 与 URI 解析

什么是shebang/hashbang?

使用 Ember.js 的 Hashbang URL

如何从vue js中的url中删除hasbang

Uri.IsWellFormedUriString 用于相对 Hashbang url 兼容性