Express 奇怪地在 url 末尾添加斜线

Express adds slash at the end of url weirdly

我正在使用 Node.js 和 Express 框架开发网站。我遇到了 url 奇怪的不当行为。当我单击相关的 link url 时,url 变为 "localhost:3000/images/" - 如您所见,最后添加了一个斜杠。但是当我将所有 'images' 更改为 'img' 或者 url 变为 "localhost: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 路由器中,“/foo”和“/foo/”被路由器视为相同。您可以使用 strict: true 选项禁用此行为。

Express.Router documentation

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

我想我知道发生了什么:您还使用了 express.static() 中间件,并且在您的 public 目录中有一个名为 images/.[=15= 的目录]

当您尝试请求与 public 目录匹配的 URL 时(即使该目录为空或与其他路由匹配),此中间件将生成以斜杠结尾的重定向。

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