我正在使用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中添加的评论,而另一个页面没有评论)。
是否有一种方法可以“规范化”所有URL,使其没有尾随斜杠?我尝试将strict routing
标志添加到Express中,但结果仍然相同。
谢谢
/foo
和/foo/
在路由器中看起来相同。鉴于页面两种方式都能呈现,我的第一个猜测是这可能是浏览器缓存问题,但是如果不了解 Disqus 的更多信息,我不能确定。 - David WeldonDisqus
将其视为两个不同的地址。无论如何,我应该如何将任何带有尾随/
的地址重定向到没有/
的地址?这样,即使用户在浏览器中输入/
,也会被重定向到正确的路径。 - Michaelapp.set('strict routing', true);
~ 来源:http://expressjs.com/api.html#app-settings - Bas van Ommen