2012-07-06 22 views
50

En la aplicación que estoy tratando de escribir, la página principal (http://localhost:8675) tiene la siguiente forma:¿Cómo redirigir la URL del navegador del usuario a una página diferente en Nodejs?

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

Aquí está el código en 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 
... 
}}} 

Me encantaría si había una manera de hacerlo donde no tenía que saber la dirección del host, ya que eso podría estar cambiando.

El objeto 'http' es una necesidad normal ('http'), NO requiere ('express').

Respuesta

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

Para el crédito apropiado .. . http://stackoverflow.com/questions/7450940/automatic-https-connection-redirect-with-node-js-express –

+0

¿Es posible hacerlo sin el paquete 'express'? – Tanaki

+2

solo para expresar. – trusktr

30

OP: "Me encantaría si hubiera una manera de hacerlo donde no tenía que saber la dirección de host ..."

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