节点 – expression太多的redirect

我有我的路线设置如下

当我导航到' http:// localhost / '时,我得到一个错误,说'本地主机redirect你太多次了',并且该页面的URL(显示在浏览器的URL栏中)是http:// localhost /!/仪表板 – 所以它看起来像它正在redirect,但我不明白为什么它陷入了一个无限循环

// Public Routes app.use('/', function(req,res){ res.redirect('/!/dashboard'); }); app.use('/login', routes.login); app.use('/!/dashboard', isLoggedIn, routes.dashboard); // Check If Logged In function isLoggedIn(req,res,next){ if (req.isAuthenticated()){ return next(); } else { res.redirect('/login'); } }; 

你不应该使用app.use('/', ...) ,因为它会匹配任何以/ 开头的 URL。

相反,使用app.all

 app.all('/', function(req,res){ res.redirect('/!/dashboard'); }); app.use('/login', routes.login); app.use('/!/dashboard', isLoggedIn, routes.dashboard); 

经典的错误会在你的Apache / Nginxconfiguration中出现。 在你的代码中,你似乎正在使用端口80,我相信你没有使用,所以你将通过Apache或Nginx代理你的请求。

(不能评论,即使这是一个不好的答案,我会根据进一步的评论进行更新)