2

我有一个实施了 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 URL 在 Google 上显示。

我还在网站的站点地图中添加了格式为http://avianguitars.ca/configurator/#!S的 URL,该站点地图是通过 Google 的开发人员工具提交的,但是 !# URL 似乎都被忽略并且仍未编入索引。

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

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

有什么明显的我遗漏的东西阻止了链接被索引吗?

4

2 回答 2

1

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

这将在 Google 方面告诉您更多信息:https ://developers.google.com/webmasters/ajax-crawling/docs/specification

于 2014-10-24T20:39:06.807 回答
1

当使用 _escaped_fragment 参数请求页面时,请确保在您的 HEAD 中输出链接 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/

于 2014-10-29T14:33:16.727 回答