问题
any idea on how i can do this in Express 3.0? As the non-www url is causing very odd problems in different areas of the website.
Thanks!
回答1:
The answer didn't work for me.
I've used the following code (http://redirect-www.org/#nodejs):
//REDIRECT www.domain.com TO domain.com
app.get ('/*', function (req, res, next){
var protocol = 'http' + (req.connection.encrypted ? 's' : '') + '://'
, host = req.headers.host
, href
;
// no www. present, nothing to do here
if (!/^www\./i.test(host)) {
next();
return;
}
// remove www.
host = host.replace(/^www\./i, '');
href = protocol + host + req.url;
res.statusCode = 301;
res.setHeader('Location', href);
res.write('Redirecting to ' + host + req.url + '');
res.end();
});
Care: this will redirect www to non-www, if you want the opposite, delete the not
on the if
condition and then replace host = host.replace(/^www\./i, '');
with host = 'www.' + host;
回答2:
So i found the answer from another question.
Node.js: 301 redirect non-www without express
Sorry for not searching before
app.get ('/*', function (req, res, next){
if (!req.headers.host.match(/^www\./)){
res.writeHead (301, {'Location': 'http://mysite.com'});
}else{
return next();
}
});
来源:https://stackoverflow.com/questions/19473222/nodejs-redirect-all-non-www-to-www-except-subdomains