【问题标题】:SEO with Node.js's Express使用 Node.js Express 进行 SEO
【发布时间】:2014-03-17 10:28:58
【问题描述】:

我正在寻找以 HTML 格式向机器人提供内容,然后为所有其他请求呈现 index.html 并让我的 Backbone.js 应用程序启动。

我最好尝试为 Google、Facebook 等创建一组已知机器人...然后如果用户代理不在该数组中,则呈现 index.html,或者 Node 的 Express 中有什么东西可以说“这是一个真正的用户,而不是任何类型的机器人”?

app.use(function(req, res) {
  var ua = req.headers['user-agent'];
  // TODO
  res.render('index.html');
});

【问题讨论】:

  • 不,没有。你不应该那样做。如果 Google 发现您会因为向机器人提供不同的内容而受到严厉惩罚,然后再向用户提供。
  • @TheHippo 你觉得呢?这将是相同的内容,即。例如,有关“项目”的信息,但它不会通过模板/JS 呈现,而是直接标记
  • 这称为伪装,违反了 Google 的服务条款。 (Official documentation at Googleanother SO question
  • Google 还会定期抓取您无法检测到的普通用户代理。 (或者至少非常难。)

标签: node.js express seo user-agent


【解决方案1】:

考虑将动态页面预呈现为静态 HTML,并以您描述的类似方法使用 express 提供给机器人。
您可以使用 phantomjs 和一些现成的库来处理页面渲染。

请记住,当您向机器人提供不同的东西时,Google 不喜欢,而且随着单页体验在网络上越来越流行,他们确实采用机器人来处理动态内容。

【讨论】:

    【解决方案2】:

    我们为 node (expressjs) 编写了中间件,可让您确定用户是否是机器人,然后将请求转发到提供预呈现 HTML 的服务器。代码可以在这里找到:https://github.com/prerender/prerender-node

    它通过支持_escaped_fragment_ 协议工作,因此我们只检查用户代理是否有不支持该协议的服务(facebook、twitter、linkedin 等)。

    目前构建它是为了将请求转发到我们的 Prerender.io 服务,该服务处理将 javascript 页面转换为静态 HTML 的所有工作,但我们还开源了我们的 phantomjs 服务器:https://github.com/prerender/prerender。这样,您可以根据需要自行托管所有内容。

    这不被视为伪装,因为您实际上是在为用户看到的内容提供服务。只是不要将静态 HTML 更改为与用户在访问这些页面时实际看到的内容不同,你会没事的。我们的服务每天为搜索引擎提供超过 100 万个页面,我们的用户都没有因伪装而受到处罚。

    检查一下,如果您有任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多