如何将 facebook 爬虫机器人重定向到另一个网页?

How can I redirect facebook crawler bot to another webpage?

我开发了由 PreactJS 完成的小型网站,其中包含主网站的某些部分 (PHP)。众所周知,Facebook 机器人无法在共享时抓取 javascript 预渲染内容。这就是为什么我想重定向让 facebook 机器人抓取主要网站 (PHP) 同时共享由 PreactJS 在 NodeJS/ExpressJS 中完成的 link 网站,如下所示:

如果用户正在分享“https://www.mywebsite.com/category/trips/10' I want nodejs/express to redirect 'https://main.mywebsite.com/category/trips/10”。谁能告诉我如何在 expressjs 级别中执行以下操作:

app.use('/*', function(req, res){
  if(req.headers['user-agent'] === 'facebookexternalhit/1.1') {

  }
});
app.use('/*', function(req, res){
  if(req.headers['user-agent'] === 'facebookexternalhit/1.1') {
   res.redirect("https://main.mywebsite.com/category/trips/10")
  }
});

如果要将其重定向到您创建的视图,可以使用 res.render()

我强烈建议代理该数据,而不是重定向。否则,Facebook 将假定您的 URL 也是普通用户的重定向。

考虑一个像 express-http-proxy 这样的模块,这使得这很简单。未经测试,但这应该可以帮助您入门:

app.use((req, res, next) => {
  if (
    !req.headers['user-agent'] ||
    !req.headers['user-agent'].startsWith('facebookexternalhit')
  ) {
    return next();
  }

  return proxy('main.mywebsite.com')(req, res);
});