当前位置:  开发笔记 > 编程语言 > 正文

Node.js重定向有/无尾随斜杠

如何解决《Node.js重定向有/无尾随斜杠》经验,为你挑选了1个好方法。

我有一个javascript根据URL做不同的事情.为了工作,我需要有一致的URI.

例如,我需要用户始终打开www.site.com/users/bob/而不是www.site.com/users/bob

不幸的是,节点似乎不支持它.

我尝试重定向

router.get('/:user', function(req, res) {
    res.redirect('/users/' + req.params.user' + '/');
});

但它只会导致重定向循环,因为带有和不带斜杠的URL似乎都被视为相同.

我怎样才能做到这一点?谢谢!

编辑:

我想从WITHOUT斜线路由到斜线.另一个问题的答案解决了另一种方式.我不能.substr(-1)我的网址



1> jncraton..:

如果其他人正在寻找快速零依赖解决方案,这对我来说很好:

app.get('/:page', function(req, res){
  // Redirect if no slash at the end
  if (!req.url.endsWith('/')) {
    res.redirect(301, req.url + '/')
  }

  // Normal response goes here
});


这显然是更好的答案,应该标记为正确.人们不应该总是依赖于最小的东西的依赖.
您是否正在考虑路径之后的查询?
@AlexanderFuchs在我看来,已接受的答案考虑了重定向循环和查询字符串,因此可以更彻底地解决该问题。我也讨厌2行代码段库,但是没有子依赖项,如果您查看[github源码](https://github.com/ericf/express-slash/blob/master/index .js)这两种方法(片段和库)都有其优缺点,我想这都取决于程序员的要求。
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有