我开发了由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') {
}
});
答案 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()。