Node.js非www到www重定向不起作用

时间:2017-11-22 07:06:39

标签: node.js url-redirection

我提到过这个: https://www.hacksparrow.com/how-to-forward-non-www-to-www-domain-name-and-vice-versa-in-node-js-express.html

还有其他Stackoverflow问题,但在做他们说的话时我仍然会遇到错误:

此代码:

app.get('/*', function(req, res, next) {
    if (req.headers.host.match(/^www/) == null ) res.redirect('http://www.' + req.headers.host + req.url, 301);
    else next();
});

将我重定向到www.localhost:8080 ......

我尝试了其他语法,但仍无效:

app.get('/*', function(req, res, next) {
    if (req.headers.host.match(/^www/) == null ) res.redirect('http://www.ride4you.co.il', 301);
    else next();
});

(它会重定向太长时间,直到Chrome超时)。

我的问题是如何解决此问题,以便将网址栏中的任何类型的地址重定向到https://www.mydomain.co.il, 例如:mydomain.com www.mydomain.co.il http://mydomain.co.il,我希望他们所有人都指出我写的第一篇。

感谢。

1 个答案:

答案 0 :(得分:0)

只允许您想要的特定主机,并抓住不太可能的情况,即它是没有主机头的HTTP / 1.0。

app.use((req, res, next) => {
    if ( !req.headers.host || req.headers.host === 'www.mydomain.co.il' ) return next() 
    res.redirect('http://www.mydomain.co.il/', 301)
})

您可以在新网址中保留用户原始请求路径。

res.redirect('http://www.mydomain.co.il'+req.originalUrl, 301)