3

我开发了由 PreactJS 完成的小型网站,其中包含主要网站 (PHP) 的某些部分。众所周知,Facebook bot 在分享时无法抓取 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') {

  }
});
4

2 回答 2

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);
});
于 2019-07-16T15:33:48.247 回答
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()

于 2019-07-16T15:28:23.903 回答