Express在url的末尾添加了斜线

我正在使用Node.js和Express框架来开发一个网站。 我面对一个url怪异的行为不端。 当我点击相关的链接url时,url变成了“localhost:3000 / images /” – 如你所见,在最后添加一个斜杠。 但是,当我把所有'图像'更改为'img',或者URL变成“本地主机:3000 / img”没有斜杠添加。 为什么路由器的行为呢? 代码如下。 (我正在使用Jade模板引擎)

//bar.jade li.nav-item a.nav-link(href='images') i.icon-camera | Images //end of bar.jade //images.js (router) var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('images', { title: 'Express'}); }); module.exports = router; //end of router .js //app.js var images =require('./routes/images'); ........ ........ app.use('/images',images); //end of app.js 

我想我知道发生了什么事:你也使用express.static()中间件,在你的公共目录下有一个名为images/的目录。

当您尝试请求匹配公共目录的URL(即使该目录为空或匹配另一个路由)时,该中间件将生成以斜杠结尾的redirect。

要禁用此行为,请将redirect选项设置为false

默认情况下,在路由器中,“/ foo”和“/ foo /”是相同的。 您可以用strict: true选项禁用此行为。

Express.Router文档

 var router = express.Router({strict: true});