NodeJS将所有非www重定向到除子域之外的www

时间:2013-10-20 02:17:55

标签: javascript node.js web express no-www

有关如何在Express 3.0中执行此操作的任何想法?由于非www网址在网站的不同区域引起了非常奇怪的问题。

谢谢!

2 个答案:

答案 0 :(得分:5)

答案对我不起作用。
我使用了以下代码(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();
});

关注:这会将www重定向到非www,如果您想要相反,请删除not条件中的if,然后替换host = host.replace(/^www\./i, '');host = 'www.' + host;

答案 1 :(得分:3)

所以我从另一个问题找到答案。

Node.js: 301 redirect non-www without express

很抱歉没有在

之前搜索
app.get ('/*', function (req, res, next){
  if (!req.headers.host.match(/^www\./)){
      res.writeHead (301, {'Location': 'http://mysite.com'});
  }else{ 
     return next();
  }
});