如何将facebook crawler bot重定向到另一个网页?

时间:2017-09-27 05:49:10

标签: node.js facebook reactjs express preact

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

如果用户分享了“https://www.mywebsite.com/category/trips/10”,我希望nodejs / express重定向“https://main.mywebsite.com/category/trips/10”。任何人都可以告诉我如何在expressjs级别中执行此操作,如下所示:

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

  }
});

2 个答案:

答案 0 :(得分:1)

我强烈建议您代理该数据,而不是进行重定向。否则,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);
});

答案 1 :(得分:0)

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

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