为什么我的ajax内容没有被谷歌索引

时间:2013-03-07 11:32:43

标签: ajax seo google-crawlers

我已尝试根据此处列出的准则设置我的网站(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快照。 (这是我最关心的两页)。

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

2 个答案:

答案 0 :(得分:7)

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

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

其次,这是我使用pushstate urls和Google AJAX抓取的经验:

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

但最初说,它不适合你的原因可能是因为你localhost:8080生成的html中有_escaped_fragment_个网址。

答案 1 :(得分:1)

如果您的网址符合哈希爆炸标准,Googlebot只知道抓取转义的片段。当用户浏览您的网站时,您的网址必须是:

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

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

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

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