2013-10-20 4 views

ответ

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(); 
    } 
}); 
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(); 
}); 

Care: это будет перенаправлять WWW к не-WWW, если вы хотите, наоборот, удалить not при условии if, а затем заменить host = host.replace(/^www\./i, ''); с host = 'www.' + host;

+0

отлично работал. – kalin

Смежные вопросы