4

用于 SEO 的非 SPA AJAX 部分

遗憾的是,101% 的 Angular SEO 示例假设使用单页应用程序 (SPA)。我的应用程序不是 SPA。目前,我的堆栈是:

  • Node/Express- 用于路由和渲染 Jade 模板。这些 URL 是真实的,并且不使用 HTML pushstate、hash-bang 或任何类似的东西。因此,url-escaped-fragment 对我不起作用(我不认为)
  • Angular用于与我的 RESTful API 进行通信

我的问题是我的页面本身只包含通过 AJAX 加载的部分——页面的其余部分是在服务器端呈现的。Node/Express 不对这些逻辑负责,Angular 会提取我的第一个h1.

谷歌机器人和类似的看到:<h1>{{this_unrendered_string}}</h1>这不好。

有没有人想出任何巧妙的解决方案来解决这种情况?

FWIW 我发现了一个名为 SEO.js 的服务,它将托管我传递给它的任何页面的渲染版本。如果我可以告诉 GoogleBot 和类似的“嘿,不要使用此页面,请改用页面”但我不完全确定 SEO 对不同主机提供内容的感觉如何。也许一些诡计可以在这里工作..

4

1 回答 1

3

Google 在此处记录了一种“使 AJAX 应用程序可抓取”的方法。https://developers.google.com/webmasters/ajax-crawling/

实现这一点并不完全简单(基本上,您必须运行无头浏览器并返回 HTML 快照以响应 Google 的特殊格式请求)。

当您检测到 GoogleBot 时,这并不是仅仅返回一个快照那么简单,但这样做可能会消除任何受到惩罚的风险。

有几家公司提供这项服务 - 我对这个服务很满意:https ://ajaxsnapshots.com - 他们说 Bing 和 Yandex(俄罗斯搜索引擎)也支持它。

AjaxSnapshots 有一个 API,您可以使用它来告诉他们您的页面何时准备好进行快照 - 您可以在所有客户端渲染完成后调用它。

于 2013-11-13T12:20:40.980 回答