当前位置: 首页 > 面试题库 >

在Express中全局重定向所有尾随斜杠

拓拔阎宝
2023-03-14
问题内容

我正在使用Node.js和Express,并且具有以下路由:

app.get('/', function(req,res){
    locals.date = new Date().toLocaleDateString();

    res.render('home.ejs', locals);
});

function lessonsRouter (req, res, next)
{
    var lesson = req.params.lesson;
    res.render('lessons/' + lesson + '.ejs', locals_lessons);
}

app.get('/lessons/:lesson*', lessonsRouter);


function viewsRouter (req, res, next)
{
    var controllerName = req.params.controllerName;
    res.render(controllerName + '.ejs', locals_lessons);
}
app.get('/:controllerName', viewsRouter);

我有一个Disqus小部件上我的课的网页,我注意到一个奇怪的行为是要当myapp.com/lessonsmyapp.com/lessons/我得到两个不同的网页(对他们都有我以前在Disqus增加,而另一个没有评论评论)。

有没有一种方法可以将我的所有网址“规范化”为不加斜杠?我尝试添加strict routing标志来表达,但结果相同

谢谢


问题答案:

尝试为此添加中间件;

app.use((req, res, next) => {
  const test = /\?[^]*\//.test(req.url);
  if (req.url.substr(-1) === '/' && req.url.length > 1 && !test)
    res.redirect(301, req.url.slice(0, -1));
  else
    next();
});


 类似资料:
  • 我们已经为我的公司创建了一个新网站,我们决定保留旧网站,并使其将所有内容和页面重定向到新网站的类似内容页面。 我已经创建了一个htaccess文件来替换旧网站上的旧文件。 这个htaccess文件包含以下行:

  • 问题内容: 我在两个不同的计算机上有两个应用程序。在计算机A上,文件中的行如下所示: 该网址对和都适用。但是在计算机BI上,有一个类似的url写成: 出于某种原因,计算机B上的/可以正常工作,但会挂起并且不会像计算机A上那样直接返回。这两个文件看起来和我一样。 问题答案: 检查settings.py文件中的设置 django文档中的更多信息

  • 问题内容: 我在两个不同的计算机上有两个应用程序。在计算机A上的文件中,有一行如下所示: 该网址对和都适用。但是在计算机BI上,有一个类似的url写成: 由于某种原因,计算机B上的可以正常工作,但会挂起并且不会像计算机A上那样直接返回。我是否错过了某些事情?这两个文件对我来说都一样。 问题答案: 检查文件中的设置

  • 以下是我的htaccess代码: 我需要制定一个重写规则,如下所示:

  • 问题内容: 当我尝试这个 有用。但是当我尝试 它将我重定向到 知道为什么吗? 这是我的htaccess文件 问题答案: 将代码更改为此:

  • 问题内容: 我想将所有不匹配的URL重定向到我的主页。就是 有人去或-我想将他们重定向到 显然,我不想干扰我的有效网址。 那么,是否可以使用一些通配符匹配器将请求重定向到这些无效的url? 问题答案: 您可以在Express链中插入“全部捕获”中间件作为最后一个中间件/路由: 我使用这样的设置来生成自定义页面。