2013-09-27 4 views
3

Im новое в метеор. Это будет круто автоматического редиректа отКак перенаправить с не www на www в meteor.js приложение

example.com

в

www.example.com

. Может ли кто-нибудь помочь?

+1

Я сделал это с nginx = \ – user732229

+0

Возможно дубликат. См. Http://stackoverflow.com/a/15706411/994922 или http://stackoverflow.com/a/16975982/994922 – Prashant

ответ

0

Вы можете сделать это, добавив часть промежуточного программного обеспечения. Это поможет вам начать:

WebApp.connectHandlers.use(function(req, res, next) { 

    /* Check if request is for non-www address */ 
    if(...) { 
     /* Redirect to the proper address */ 
     res.writeHead(301, { 
      Content-Type': 'text/html; charset=UTF-8', 
      Location: correctURL, 
     }); 
     res.end("Moved to: " + correctURL); 
     return; 
    } 

    /* Did not redirect - continue with the application stack */ 

    next(); 

}); 
+0

Это похоже на единственный ответ в Интернете. Поскольку я новичок в meteor.js и node.js, у меня возникли проблемы с определением, где это поставить ... Edit: Я обработал его в apache vhosts. –

+0

Это код сервера, поэтому вы помещаете его в том же месте, где вы бы поместили любой код сервера. Поэтому в папке '/ server' предпочтительно, но может быть и где угодно внутри условия if (Meteor.isServer). –

+0

Это необходимо сделать на уровне DNS. См. Http://stackoverflow.com/a/15706411/994922 – Prashant

7

Я знаю, что это 2-х лет, но он не имеет общепринятый ответ, чтобы я обеспечиваю полный ответ:

WebApp.connectHandlers.use(function(req, res, next) { 

    // Check if request is for non-www address 
    if (req.headers && req.headers.host.slice(0, 4) !== 'www.') { 

    // Add www. from host 
    var newHost = 'www.' + req.headers.host 

    // Redirect to www. version URL 
    res.writeHead(301, { 
     // Hard-coded protocol because req.protocol not available 
     Location: 'http://' + newHost + req.originalUrl 
    }); 
    res.end(); 

    } else { 
    // Continue with the application stack 
    next(); 
    } 
}); 

Вы можете пойти в обратном направление (WWW к не-WWW) со следующим кодом:

WebApp.connectHandlers.use(function(req, res, next) { 

    // Check if request is for non-www address 
    if (req.headers && req.headers.host.slice(0, 4) === 'www.') { 

    // Remove www. from host 
    var newHost = req.headers.host.slice(4); 

    // Redirect to non-www URL 
    res.writeHead(301, { 
    // Hard-coded protocol because req.protocol not available 
     Location: 'http://' + newHost + req.originalUrl 
    }); 
    res.end(); 

    } else { 
    // Continue with the application stack 
    next(); 
    } 
}); 
0

Я использовать с этим кодом на стороне клиента:

Meteor.startup(function() { 
    if (location.host.indexOf('www.domain.com') !== 0) { 
     location = 'www.domain.com'; 
    } 
}); 

Его простота и работа. Надеюсь, это ответит на ваши вопросы. Thanks

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