node.js – 以快速方式全局重定向所有尾部斜杠

我正在使用Node.js和Express,我有以下路由:

app.get('/', function(req,res){
    locals.date = new Date().toLocaleDateString();

    res.render('home.ejs', locals);
});

function lessonsRouter (req, res, next)
{
    var lesson = req.params.lesson;
    res.render('lessons/' + lesson + '.ejs', locals_lessons);
}

app.get('/lessons/:lesson*', lessonsRouter);


function viewsRouter (req, res, next)
{
    var controllerName = req.params.controllerName;
    res.render(controllerName + '.ejs', locals_lessons);
}
app.get('/:controllerName', viewsRouter);

我的课程页面上有一个Disqus小部件,我注意到一个奇怪的行为,当我访问myapp.com/lessons和myapp.com/lessons/我得到两个不同的页面(其中有一个我以前添加在Disqus和另一个没有评论)。

有没有办法“封存”我所有的网址是没有拖尾的?我试图添加严格的路由标志来表达,但结果是一样的

谢谢

最佳答案
尝试添加一个中间件;

app.use(function(req, res, next) {
   if(req.url.substr(-1) == '/' && req.url.length > 1)
       res.redirect(301, req.url.slice(0, -1));
   else
       next();
});

转载注明原文:node.js – 以快速方式全局重定向所有尾部斜杠 - 代码日志