Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 快速-允许在路由路径的末尾关闭/关闭_Node.js_Express - Fatal编程技术网

Node.js 快速-允许在路由路径的末尾关闭/关闭

Node.js 快速-允许在路由路径的末尾关闭/关闭,node.js,express,Node.js,Express,虽然Express中的路由非常简单,但我很难将其调整为以/结尾的路径。 例如,建议我定义以下路线: app.get('/about', (req,res) => res.render('about')); 现在,如果有人导航到www.example.com/about将呈现about视图。但是,如果同一个人导航到www.example.com/about/,我上面指定的路线将不起作用。有些人(包括我在内)已经习惯于在路径的末尾自然添加一个结束符/结束符。我读了这个页面,但是开发者似乎没有

虽然Express中的路由非常简单,但我很难将其调整为以
/
结尾的路径。 例如,建议我定义以下路线:

app.get('/about', (req,res) => res.render('about'));
现在,如果有人导航到
www.example.com/about
将呈现about视图。但是,如果同一个人导航到
www.example.com/about/
,我上面指定的路线将不起作用。有些人(包括我在内)已经习惯于在路径的末尾自然添加一个结束符/结束符。我读了这个页面,但是开发者似乎没有意识到这种可能性。到目前为止,我找到的唯一解决方案是对每条路线使用正则表达式来解释这种变化。例如,上述路线将变为:

app.get(/\/about\/?/, (req,res) => res.render('about'));

是否有一种更优雅(或内置)的解决方案来允许带有关闭/进入快车的路径?

这个问题已经在中得到了回答

基本上,您需要添加一个中间件,该中间件将去掉尾部斜杠并发出重定向请求,这将解决您的问题

下面是上一个答案的代码片段

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();
    }
});
为了避免重定向,您可以重写URL。参考文献

注意:使用这种方法,浏览器URL保持不变

app.use(function(req, res, next) {
  if (req.url.slice(-1) === '/') {
    req.url = req.url.slice(0, -1);
  }
  next();
});

http apache standered/about/mean/about/index.html和web framenwork使用与like/about/index.php相同的东西,您在哪里混淆是的。我写的句子有点误导人。我将删除它,因为PHP MVC比较并不能真正帮助解决这个问题。非常感谢您向我展示答案。很难解释这个问题,因此也很难搜索它(术语非常模糊)。这是一个很好的解决方案。不幸的是,您上面编写的解决方案需要重定向。重定向比使用正则表达式更耗时。在Express到达app.get方法之前,是否无法更改Express用于检查app.get的路径(路径,回调)?@Nadav更新了答案