我将根据我们上个月开发HTML5模式的SPA的经验尝试回答您的问题。
如何让 Googlebot 使用 ?_escaped_fragment_= 而不是直接链接。
这实际上很简单,但很容易被忽视。事实上,有两种不同的方法可以让 Googlebot 尝试 escaped_fragment。第一种方法是以非 html5 模式运行您的网站。这意味着您的 URL 将采用以下形式:
http://my.domain.com/base/#!some/path/on/website http://my.domain.com/base/#!some/path/on/website
Googlebot 可识别 #!并使用更改后的 URL 对您的服务器进行第二次调用:
http://my.domain.com/base/?_escaped_fragment_=some/path/on/website http://my.domain.com/base/?_escaped_fragment_=some/path/on/website
然后您就可以按照您的意愿进行处理。让 Googlebot 尝试 _escaped_fragment_ 模式的第二种方法是在您提供给机器人的索引页上包含以下元标记:
<meta name="fragment" content="!">
这将使 googlebot 每次看到该标签时都会检查网页的其他版本。有趣的是,您可以同时使用这两种技术,或者您可以执行我们最终所做的操作,即使用元标记在 html5 模式下运行。这意味着您的 URL 将按如下方式转义:
http://my.domain.com/base/some/path/on/website?_escaped_fragment_= http://my.domain.com/base/some/path/on/website?_escaped_fragment_=
有趣的是,机器人不会在片段末尾放置任何内容。但根据您运行的网络服务器,您可以轻松地将其与“_escaped_fragment_”文本匹配的模式映射到您的备用机器人页面。有关逃逸片段的更多信息,请访问here https://developers.google.com/webmasters/ajax-crawling/docs/specification.
“Fetch as Googlebot”返回我的页面的两个不同版本,带有 {{}} 的源和看起来正确的呈现页面。这意味着什么?
自 2014 年初以来,Google 的 Bot 实际上可以在有限的范围内解释 JavaScript。有关更多信息,请阅读 google webmasters 上的官方博客条目here http://googlewebmastercentral.blogspot.ch/2014/05/understanding-web-pages-better.html。然而,正如博客文章中明确指出的,这有很多警告。例如:
- Googlebot 不保证执行所有 JavaScript 代码。
- Googlebot 将尝试在 javascript 中查找要跟踪的链接,并使用它们来帮助查找更多页面。
- Googlebot 将通过执行尽可能多的 JavaScript 来在网站站长工具中呈现预览(因此呈现版本中缺少 {{}})。
- Googlebot 不一定会使用渲染版本来为其索引构建有关您网站的元信息。
As of 2014年12月18日,我们仍然不确定 Googlebot 是否真的可以在呈现模式下从 SPA 中提取任何信息作为其索引,而不仅仅是在 javascript 中查找要跟踪的链接。根据我们的经验,Googlebot 会在其索引列表中包含 {{}},以便当您尝试使用 {{}} 填充元信息(说明、关键字、标题等...)时,您的网站在 Google 搜索中看起来像这样结果:
{{meta.siteTitle}}
http://my.domain.com/base/some/path/on/website http://my.domain.com/base/some/path/on/website
{{元.描述}}
而不是你所期望的,它可能看起来像这样:
Domain
http://my.domain.com/base/some/path/on/website http://my.domain.com/base/some/path/on/website
这是我的域上的随机页面。毫无疑问,这是一个出色的示例页面!