перенаправить не www и http - NodeJS и Экспресс - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь перенаправить URL-адреса без www на www в моем приложении Node JS / Express.

Следующий фрагмент успешно выполняет перенаправление 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);

То, что не покрывается, это http до https.Я могу сделать это в своей собственной функции

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

Как я могу объединить два, чтобы я мог охватить оба сценария

1 Ответ

2 голосов
/ 26 марта 2019

С помощью экспресс вы можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...