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
选项禁用此行为。
var router = express.Router({strict: true});
我想我知道发生了什么:您还使用了 express.static()
中间件,并且在您的 public 目录中有一个名为 images/
.[=15= 的目录]
当您尝试请求与 public 目录匹配的 URL 时(即使该目录为空或与其他路由匹配),此中间件将生成以斜杠结尾的重定向。
要禁用此行为,请将 redirect
option 设置为 false
。
我正在使用 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
选项禁用此行为。
var router = express.Router({strict: true});
我想我知道发生了什么:您还使用了 express.static()
中间件,并且在您的 public 目录中有一个名为 images/
.[=15= 的目录]
当您尝试请求与 public 目录匹配的 URL 时(即使该目录为空或与其他路由匹配),此中间件将生成以斜杠结尾的重定向。
要禁用此行为,请将 redirect
option 设置为 false
。