【问题标题】:Why is my ajax content not being indexed by google为什么我的 ajax 内容没有被谷歌索引
【发布时间】:2013-02-22 14:02:40
【问题描述】:

我已尝试根据此处列出的指南设置我的网站 (http://www.diablo3values.com):https://developers.google.com/webmasters/ajax-crawling/ 但是,Google 似乎已经更新了他们的索引(因为我看到了对元描述标签的修订)但是ajax 内容未显示在索引中。

我正在尝试使用“处理没有散列片段的页面”选项。

如果您查看以下任一情况:

http://www.diablo3values.com/?_escaped_fragment_=

http://www.diablo3values.com/about?_escaped_fragment_=

您将正确地看到包含我的内容的 HTML 快照。 (这是我最关心的两页)。

有什么想法吗?难道我做错了什么?你如何让谷歌正确识别标签。

【问题讨论】:

    标签: ajax seo google-crawlers


    【解决方案1】:

    我正在输入这个作为答案,因为它有点太长才能成为评论。

    首先,您的链接似乎指向localhost:8080/about,而不是/about,这可能是谷歌一开始没有将其编入索引的原因。

    其次,这是我在 pushstate url 和 Google AJAX 抓取方面的经验:

    我的经验是,使用 pushstate url 进行 ajax 爬行的 google 处理方式与使用 hashbang url 的处理方式略有不同。由于 google 不会知道您的 url 是 pushstate url(因为它看起来就像一个常规 url),您需要将 <meta name="fragment" content="!"> 添加到您的所有页面,而不仅仅是“根”页面。而且 google 似乎并不知道这些页面是同一个应用程序的一部分,因此它将每个页面都视为一个单独的 Ajax 应用程序。因此,Google bot 永远不会真正在 _escaped_fragment_ 中创建导航结构,例如 _escaped_fragment_=/about,就像使用 hashbang url (#!/about) 一样。相反,它将请求/about?_escaped_fragment_=(您显然已经设置了)。这适用于您的所有“深层链接”。 google 将始终请求 /thelink?_escaped_fragment_=,而不是 /?_escaped_fragment_=/thelink

    但正如最初所说,它对您不起作用的原因可能是因为您在 _escaped_fragment_ 生成的 html 中有 localhost:8080 网址。

    【讨论】:

      【解决方案2】:

      只有当您的网址符合 hash bang 标准时,Googlebot 才会知道抓取转义的片段。当用户浏览您的网站时,您的网址需要:

      http://www.diablo3values.com/
      http://www.diablo3values.com/#!contact
      http://www.diablo3values.com/#!about
      

      Googlebot 实际上需要在源代码中查看这些 url,以便它可以跟踪它们。然后它知道下载以下网址:

      http://www.diablo3values.com/?_escaped_fragment=contact
      http://www.diablo3values.com/?_escaped_fragment=about
      

      在您的网站上,您似乎每次点击都会加载一个新页面,然后也通过 AJAX 加载每个页面的内容。这不是我期望 AJAX 站点工作的方式。通常使用 AJAX 的目的是让用户永远不必加载一个全新的页面。当用户点击时,新的内容部分被加载并插入到页面中。您提供导航一次,然后您只提供内容的转义片段。

      【讨论】:

      • 斯蒂芬,感谢您的浏览。我正在尝试使用较新的 HTML5 pushstate 而不是 hashbang 标准(希望页面不会随着每个链接重新下载)。我正在使用一个backbone.js 路由器,如果浏览器不支持它,它应该回退到hashbang。谷歌的文档让我相信这仍然可以完成(查看developers.google.com/webmasters/ajax-crawling/docs/… 的第三步
      • 说了这么多,我认为您帮助我发现了我的错误:我使用的是:(diablo3values.com/about?_escaped_fragment_=) 而不是:(diablo3values.com/about?_escaped_fragment=about) 你认为可能是这样吗?
      • 如果您使用推送状态,您的服务器必须在请求 url 时将完整页面返回给 googlebot。只有当有 hashbang url 时,Googlebot 才会获取 _escaped_fragment。您需要将转义片段#include(服务器端)到页面文本中以进行第一页查看,然后使用获取部分转义片段并使用pushstate进行点击。
      • 我认为你可以绕过 #!要求包含转义的片段元标记
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2020-01-10
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多