我正在使用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增加,而另一个没有评论评论)。
myapp.com/lessons
myapp.com/lessons/
有没有一种方法可以将我的所有网址“规范化”为不加斜杠?我尝试添加strict routing标志来表达,但结果相同
strict routing
谢谢
尝试为此添加中间件;
app.use((req, res, next) => { const test = /\?[^]*\//.test(req.url); if (req.url.substr(-1) === '/' && req.url.length > 1 && !test) res.redirect(301, req.url.slice(0, -1)); else next(); });