2012-07-06 23 views
50

W aplikacji próbuję pisać, strona główna (http://localhost:8675) ma następującą postać:Jak przekierować URL przeglądarki użytkownika na inną stronę w Nodejs?

<form action='/?joinnew' method='post'> 
    <button>Start</button> 
</form> 

Oto kod w server.js:

http.createServer(function(request, response) { 
    var root = url.parse(request.url).pathname.split('/')[1]; 
    if (root == '') { 
    var query = url.parse(request.url).search: 
    if (query == '?joinnew') { 
     var newRoom = getAvaliableRoomId(); // '8dn1u', 'idjh1', '8jm84', etc. 
     // redirect the user's web browser to a new url 
     // ??? How to do. Need to redirect to 'http://whateverhostthiswillbe:8675/'+newRoom 
... 
}}} 

chciałbym jeśli był sposób, aby to zrobić, gdy nie musiałem znać adresu hosta, ponieważ mogło się to zmienić.

Obiekt "http" to zwykłe wymaganie ("http"), NIE wymagające ("ekspresowe").

Odpowiedz

79
response.writeHead(301, 
    {Location: 'http://whateverhostthiswillbe:8675/'+newRoom} 
); 
response.end(); 
64
http.get('*',function(req,res){ 
    res.redirect('http://mydomain.com'+req.url) 
}) 
+7

Dla odpowiedniego kredytu .. http://stackoverflow.com/questions/7450940/automatic-https-connection-redirect-with-node-js-express –

+0

Czy można to zrobić bez pakietu "ekspresowego"? – Tanaki

+2

tylko ekspresowe. – trusktr

30

OP: „Chciałbym, gdyby nie było sposobu, aby to zrobić, gdzie nie trzeba znać adres hosta ...”

response.writeHead(301, { 
    Location: "http" + (request.socket.encrypted ? "s" : "") + "://" + 
    request.headers.host + newRoom 
}); 
response.end(); 
Powiązane problemy