微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,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,next) {
   if(req.url.substr(-1) == '/' && req.url.length > 1)
       res.redirect(301,req.url.slice(0,-1));
   else
       next();
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐