2012-07-06 31 views
50

Nella domanda che sto cercando di scrivere, la pagina principale (http://localhost:8675) ha la seguente forma:Come reindirizzare l'URL del browser dell'utente a una pagina diversa in Nodejs?

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

Ecco il codice in 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 
... 
}}} 

mi piacerebbe se c'era un modo per farlo dove non dovevo conoscere l'indirizzo dell'host, dal momento che potrebbe cambiare.

L'oggetto "http" è una richiesta regolare ('http'), NON richiede ('espresso').

risposta

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

Per il credito appropriato .. http://stackoverflow.com/questions/7450940/automatic-https-connection-redirect-with-node-js-express –

+0

È possibile farlo senza il pacchetto 'express'? – Tanaki

+2

solo per espresso. – trusktr

30

OP: "Mi piacerebbe se ci fosse un modo per farlo in cui non ho avuto di conoscere l'indirizzo host ..."

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