ajax - Angular JS *非 SPA* SEO

标签 ajax angularjs express pug googlebot

用于 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 中的数据。 .
    Google Bot 和类似工具参见:<h1>{{this_unrendered_string}}</h1>这是不好的。
    有没有人想出任何巧妙的解决方案来解决这种情况?
    FWIW 我发现了一个名为 SEO.js 的服务,它将托管我传递给它的任何页面的渲染版本。如果我可以告诉 GoogleBot 和类似的“嘿,不要使用此页面,而是使用此页面”但我不完全确定 SEO 对不同的主机服务内容有何感觉。也许一些诡计可以在这里工作..

    最佳答案

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

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

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

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

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

    关于ajax - Angular JS *非 SPA* SEO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19935119/

    相关文章:

    javascript - 请帮我获取哈希密码

    node.js - 我该如何处理服务器上的所有错误,使其永不崩溃?

    php - 将变量从 AJAX 传递到 PHP 以进行 MySQL 查询时出错

    ajax - 在 Django View 中从上传访问临时文件

    javascript - 基于另一个选择的ajax选择

    java - 无法比较 AJAX 调用返回的字符串

    javascript - AngularJs 工厂和 Controller 控制流程

    javascript - Expressjs 中的全局对象

    javascript - AngularJS 在我的 SF2 应用程序中不起作用

    javascript - Chrome 在 JavaScript 中切换时应用样式表非常慢