Hashbang,prereder.io和机器人

时间:2013-12-21 04:59:53

标签: angularjs googlebot hashbang prerender

我对搜索机器人如何抓取我的ajax网站感到有些困惑。

http://www.example.com包含3个链接

  • #!/ ABC
  • #!/ XYZ
  • #!/ 123

我的页面标题中包含<meta name="fragment" content="!">,因此机器人应使用以下网址访问这些链接,我使用prerender.io来提供页面

机器人抓取这些网页时的行为如何?当他们在这些页面上找到新的链接时,网址会是什么样的?

  1. #!/ abc1 =&gt; http://www.example.com?_escaped_fragment_=/abc#!/abc1
  2. #!/ abc2 =&gt; http://www.example.com/#!/abc/abc2

1 个答案:

答案 0 :(得分:3)

以下是Google完整的AJAX抓取规范:https://developers.google.com/webmasters/ajax-crawling/docs/specification

机器人会看到#!并将其转换为_escaped_fragment_网址,就像您提到的那样。 <meta name="fragment" content="!">标记仅适用于没有#!的网页,例如您的主页或任何HTML5推送状态网址。如果网址包含#!,则Google会自动询问_escaped_fragment_,而不会检查<meta name="fragment" content="!">

如果Google抓取http://example.com?_escaped_fragment_=/abc并在该页面上找到/#!/xyz的链接,则会针对http://example.com?_escaped_fragment_=/xyz单独发出请求。

因此,您应始终将您的网址链接到#!网址,绝不会链接到_escaped_fragment_网址。谷歌将自行改造它们。