我有一个网站已经实施了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)网址,我认为现在一般抓取也会获取网址。
是否有任何明显的错误导致链接无法编入索引?
答案 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网站管理员工具注册您的网站,看看是否有任何问题报告: