2016-04-22 429 views
0

服務頁面時有一些問題(在我的情況下是nodejs)。Node.js:相對路徑和絕對路徑

比方說,我有以下網址:http://localhost:80它提供了一個簡單的html頁面,但您必須登錄,無論您是重定向到登錄頁面(http://localhost:80/login)。

這很簡單,一切正常。 現在讓我們說我有另一個網址http://otherdoamin.com/internal/back重定向到我的服務器偵聽端口80.

我有麻煩找到什麼是最好的方式來管理我的服務器上工作的兩個網址。

下面是一個代碼示例只是爲了顯示的邏輯:

function checkAuth(req, res, next) { 
//if user isn't logged, redirect to login 
} 

app.get('/login', function(req, res) { 
    //if user is logged, redirect to base path (/) which serves an html page 
    //else 
    //display login.html page 
}) 

app.get('/', checkAuth, function (req, res) { 
    res.sendFile(__dirname + '/views/index.html'); 
}); 

現在讓我有下面的情況說:

我去http://localhost:80,但我沒有登錄,我重定向到登錄頁面(http://localhost:80/login)。然後登錄後,我被重定向回http://localhost:80

但是,如果我用我的其他網址(http://otherdoamin.com/internal/back)執行以下這種情況,我將遇到路徑問題:如果我有絕對路徑,登錄重定向將起作用,但登錄後,我將擁有重定向到http://otherdoamin.com/而不是http://otherdoamin.com/internal/back/,這很明顯。

+0

你是否試圖維持他們的URL保持http://otherdoamin.com/internal/back?就像他們應該能夠登錄並仍然可以在他們的網址欄中看到其他域名?如果它只是一個純粹的重定向,這與在DNS中設置正確的URL值一樣簡單。 – Devnetics

+0

是的,我沒有訪問權限(我不是那個做重定向的人),但這是實現它的唯一方法嗎? – krakig

+0

您的服務器將從其他域接收任何請求的唯一方法是2種情況之一。 A)在DNS中有一個URL重定向記錄。 B)otherdomain只是一個reverseeproxy指向你的網址。 – Devnetics

回答

1

選項1:

設置otherdomain.com/internal/back作爲反向代理路徑定義的基本URL。

選項2:

商店完全合格的原始請求URL:

var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;

,然後用它來重定向;