谷歌#shebang#! ajax抓取的语法不会导致抓取的网页

时间:2014-10-21 15:37:08

标签: javascript php ajax url google-ajax

我有一个网站已经实施了Google的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网址在Google上显示。

我还将http://avianguitars.ca/configurator/#!S格式的网址添加到网站的网站地图中,该网站地图是通过Google的开发人员工具提交的,但是!#URL似乎都被忽略并且仍然是没有索引。

' shebanged'网址为http://avianguitars.ca/configurator/#!action=showline&lineid=46,映射到http://avianguitars.ca/configurator/?_escaped_fragment_=action%3Dshowline%26lineid%3D46

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

是否有任何明显的错误导致链接无法编入索引?

2 个答案:

答案 0 :(得分:1)

是的,你错过了什么。您需要添加<meta name="fragment" content="!" />以告知您的shebang URL使用标识符片段。

这会告诉您更多关于Google的信息:https://developers.google.com/webmasters/ajax-crawling/docs/specification

答案 1 :(得分:1)

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

因此,当使用特殊参数请求页面时,请在输出中包含此内容:

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

我有一个完全基于hashbang的网站,它已完全编入索引(提交了312个网址,索引了309个网址)。我只是将你的网站与我的网站进行了比较,这是唯一似乎缺失的东西。我不确定这是你的问题的解决方案,但我没有在你的HTML中看到它。我添加了这个标签,因为我在google文档中的某处读到了它,但现在我似乎无法再找到它了......

此外,我的网站不包含此内容:

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

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

此外,google sitemap中的网址应使用hashbang语法,而不是_escaped_fragment语法。如果您遇到问题,请尝试使用Google网站管理员工具注册您的网站,看看是否有任何问题报告:

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