Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExpressJS中的app.use函数如何重定向以“0”结尾的URL/&引用;?_Javascript_Node.js_Express_Handlebars.js - Fatal编程技术网

Javascript ExpressJS中的app.use函数如何重定向以“0”结尾的URL/&引用;?

Javascript ExpressJS中的app.use函数如何重定向以“0”结尾的URL/&引用;?,javascript,node.js,express,handlebars.js,Javascript,Node.js,Express,Handlebars.js,此代码将所有以“/”结尾的URL重定向到同一URL,但不带“/”。例如,如果用户导航到,他们将被重定向到。这将使HTML文件中的图像URL和内容始终正常工作 var express = require('express'); var app = express(); app.use(function (req, res, next) { if (req.path.substr(-1) == '/' &&

此代码将所有以“/”结尾的URL重定向到同一URL,但不带“/”。例如,如果用户导航到,他们将被重定向到。这将使HTML文件中的图像URL和内容始终正常工作

        var express = require('express');
        var app = express();
        app.use(function (req, res, next) {  
            if (req.path.substr(-1) == '/' && req.path.length > 1) {
        var query = req.url.slice(req.path.length);  
res.redirect(301, req.path.slice(0, -1) + query);
 } else {
                next();
            }
});
有人能解释一下这个密码里面发生了什么吗。根据我的理解,如果请求的路径最后一个索引等于/并且请求的路径长度大于1,则必须执行以下代码

因此,如果满足条件,则根据收到的参数(作为请求的实际路径长度)查询变量slice请求的url。重定向函数将slice函数作为其回调函数


slice方法有两个参数。第一个参数取第一个索引值,-1取最后一个索引值。它还包括查询变量中的结果。

最好的解决方案是使用此包

$npm安装连接斜杠

然后你可以使用下面的方法

var connect = require("connect")
  , slashes = require("connect-slashes");

connect()
  .use(connect.logger())
  .use(connect.static())
  .use(slashes(false))
  .listen(3000);

将代码块与问题文本分开。评论中的问题很难理解。请使用一致的缩进设置代码的格式(也是为了可读性)。但到目前为止,理解此代码的最佳方法是在中逐步执行。
斜杠(false)