重定向非www和http-NodeJS和Express

时间:2019-03-26 14:46:11

标签: node.js express

我正在尝试将非www网址重定向到我的Node JS / Express应用程序中的www。

以下代码段成功执行了301重定向

function checkUrl(req, res, next) {
  let host = req.headers.host;
  if (host.match(/^www\..*/i)) {
    next();
  } else {
    res.redirect(301, "https://www." + host + req.url);
  }
}

我照原样使用

app.all('*', checkUrl);

不涉及的是httphttps。我可以通过自己的功能来做到这一点

function ensureSecure(req, res, next) {
  if (req.headers['x-forwarded-proto'] === 'https') {
    return next();
  }
  return res.redirect('https://' + req.hostname + req.url);
}

如何将两者结合在一起,以便涵盖两种情况

1 个答案:

答案 0 :(得分:2)

借助express,您可以使用app.use对每个请求运行中间件。因此,结合您已经取得的成就

function checkUrl(req, res, next) {
  let host = req.headers.host;
  if (!host.match(/^www\..*/i)) {
    return res.redirect(301, "https://www." + host + req.url);
  } else if (req.headers['x-forwarded-proto'] !== 'https') {{
    return res.redirect('https://' + req.hostname + req.url);
  }
  next();
}

app.use(checkUrl);