【问题标题】:Angular JS *non-SPA* SEOAngular JS *非SPA * SEO
【发布时间】:2013-11-12 16:51:35
【问题描述】:

用于 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 对不同主机提供内容的感觉如何。也许一些诡计可以在这里起作用..

【问题讨论】:

    标签: ajax angularjs express pug googlebot


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我不会因为快照的真实位置位于不同的域/CDN 上而受到打击(在排名等方面)?跨度>
    • @couzzi - 不应该,因为你自己的网络服务器是谷歌看到的。我刚刚推出了类似的服务crawlspa.com
    • 我还可以推荐 seo4ajax.com 作为 ajaxsnapshots 或 crawlspa 的替代品。它嵌入了一个爬虫来提前准备快照,它也有助于检测错误。我们在 6 个月前开通了该服务,目前每天捕获超过 100,00 个页面。注意:在测试期间完全免费。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2015-11-19
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多