2012-07-06 35 views
50

Trong ứng dụng Tôi đang cố gắng để viết, trang chính (http://localhost:8675) có dạng sau:Làm cách nào để chuyển hướng URL của trình duyệt của người dùng đến một trang khác trong Nodej?

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

Đây là mã trong 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 
... 
}}} 

Tôi rất thích nếu có một cách để làm điều đó, nơi tôi không phải biết địa chỉ máy chủ, vì điều đó có thể thay đổi.

Đối tượng 'http' là yêu cầu thường xuyên ('http'), KHÔNG yêu cầu ('express').

Trả lời

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

Đối với tín dụng phù hợp .. http://stackoverflow.com/questions/7450940/automatic-https-connection-redirect-with-node-js-express –

+0

Có thể thực hiện nó mà không có gói 'express' không? – Tanaki

+2

chỉ để thể hiện. – trusktr

30

OP: "Tôi rất thích nếu có một cách để làm điều đó mà tôi không cần phải biết địa chỉ máy chủ ..."

response.writeHead(301, { 
    Location: "http" + (request.socket.encrypted ? "s" : "") + "://" + 
    request.headers.host + newRoom 
}); 
response.end(); 
Các vấn đề liên quan