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

为什么我的ajax内容没有被google索引,ajax,seo,google-crawlers,Ajax,Seo,Google Crawlers,我已经试着按照这里列出的指导原则设置我的站点():但是,Google似乎已经更新了他们的索引(因为我看到了对meta description标签的修改),但是ajax内容没有显示在索引中 我正在尝试使用“处理没有散列片段的页面”选项 如果您查看以下任一项: 您将正确地看到带有“我的内容”的HTML快照。(这是我最关心的两页) 有什么想法吗?我做错什么了吗?如何让谷歌正确识别标签。谷歌机器人只知道在你的URL符合hash-bang标准的情况下抓取转义片段。当用户浏览您的站点时,您的URL需要:

我已经试着按照这里列出的指导原则设置我的站点():但是,Google似乎已经更新了他们的索引(因为我看到了对meta description标签的修改),但是ajax内容没有显示在索引中

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

如果您查看以下任一项:

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


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

谷歌机器人只知道在你的URL符合hash-bang标准的情况下抓取转义片段。当用户浏览您的站点时,您的URL需要:

http://www.diablo3values.com/
http://www.diablo3values.com/#!contact
http://www.diablo3values.com/#!about
Googlebot实际上需要在源代码中看到这些URL,以便跟踪它们。然后它知道如何下载以下URL:

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

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

我键入此作为一个答案,因为作为一个注释有点太长了

首先,你的链接似乎指向的是
localhost:8080/about
,而不是
/about
,这可能就是谷歌不首先为其编制索引的原因

其次,以下是我在pushstate URL和Google AJAX抓取方面的经验:

我的经验是,谷歌对使用pushstate URL进行ajax爬行的处理方式与使用hashbang URL的处理方式略有不同。由于google不知道你的url是一个pushstate url(因为它看起来就像一个普通url),你需要将
添加到你的所有页面,而不仅仅是“根”页面。谷歌似乎不知道这些页面是同一个应用程序的一部分,所以它将每个页面都视为一个单独的Ajax应用程序。因此,谷歌机器人永远不会像hashbang url(
#!/about
)那样,在
_-escaped_-fragment_
内部创建导航结构。相反,它将请求
/about?\u转义\u片段
(您已经设置好了)。这适用于你所有的“深层链接”。谷歌将始终请求
/thelink?\u转义\u片段
,而不是
/?\u转义\u片段


但正如最初所说,它不适用于您的原因可能是因为您在
\u转义\u片段
生成的html中有
localhost:8080
URL

斯蒂芬,谢谢你看。我正在尝试使用较新的HTML5 pushstate,而不是hashbang标准(希望页面不会随着每个链接重新下载)。我使用的是一个backbone.js路由器,如果浏览器不支持它,它应该回退到hashbang。谷歌的文档让我相信这仍然是可以做到的(看看第三步,我认为你已经说了我认为你帮我发现了我的错误:我在使用:()而不是:)你认为可能是这样吗?如果你使用推送状态,当请求url时,你的服务器必须将完整页面返回给googlebot。googlebot只在存在hashbang url时获取“转义”片段。你需要包含(服务器端)将转义片段转换为页面文本以供第一次页面查看,然后使用fetch partial转义片段并使用pushstate进行单击。我认为您可以通过包含转义片段元标记绕过#!要求