2016-04-22 302 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;

,然后用它来重定向;