谷歌';s shebang#!ajax爬网的语法不会导致爬网的页面


Google's shebang #! syntax for ajax crawling not resulting in crawled pages

我有一个网站实现了谷歌的shebang'#!'ajax爬网的语法。

系统的两个方面都已按照https://developers.google.com/webmasters/ajax-crawling/docs/specification

换句话说,Ajax创建的页面的URL,例如:http://avianguitars.ca/configurator/#!S映射到缓存在服务器端的静态HTML版本http://avianguitars.ca/configurator/?_escaped_fragment_=S

谷歌应该看到#!语法,抓取_escaped_fragment_版本,并将其与原始版本一起显示在谷歌上http://avianguitars.ca/configurator/#!S的URL。

我还添加了以下格式的URLhttp://avianguitars.ca/configurator/#!S到该网站的网站地图,它是通过谷歌的开发工具提交的,然而!#所有URL似乎都被忽略,并且仍然没有索引。

"shebanged"URL的另一个例子是http://avianguitars.ca/configurator/#!action=showline&lineid=46映射到http://avianguitars.ca/configurator/?_escaped_fragment_=action%3Dshowline%26lineid%3D46

通过站点地图提交的所有其他(非ajax)URL都被接受,我认为一般的爬网现在也会获取这些URL。

是否有任何明显的我遗漏的东西阻止链接被索引?

是的,您错过了一些东西。您需要添加<meta name="fragment" content="!" />来说明您的shebang URL使用了一个标识符片段。

这将告诉你更多关于谷歌的信息:https://developers.google.com/webmasters/ajax-crawling/docs/specification

当使用_escaped_fragment参数请求页面时,请确保在HEAD中输出一个link rel=canonical标记。

因此,当您的页面被使用特殊参数请求时,请将其包含在您的输出中:

<link rel="canonical" href="http://avianguitars.ca/configurator/#!action=showline&lineid=46"/>

我有一个完全基于hashbang的网站,它是完全索引的(提交了312个URL,索引了309个URL)。我只是将你的网站与我的网站进行了比较,这似乎是唯一缺少的东西。我不确定这是否是你问题的解决方案,但我在你的html中看不到。我添加这个标签是因为我在谷歌文档中读到了它,但现在我似乎再也找不到了。。。

此外,我的网站不包括以下内容:

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

但这并没有阻止它被编入索引。

此外,谷歌网站地图中的url应该使用hashbang语法,而不是_escaped_fragment语法。如果你一直有问题,试着用谷歌网站管理员工具注册你的网站,看看那里是否报告了任何问题:

https://www.google.com/webmasters/tools/