Как использовать метод get с полным URL или поддоменом в экспрессе? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу перенаправить кого-то в моем приложении Express, но мне нужно проверить, что происходит перед example.com, например cdn.example.com, api.sample.example.com, что бы ни находилось в пути.Как я могу сделать это в той части моего приложения, которая связана с маршрутами?Я не могу понять, как заставить это работать в моей тестовой среде.

РЕДАКТИРОВАТЬ: Я пробовал:

routes.use(function forceMainSite(req, res, next) {
  //var host = req.get('Host');
  var fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
  if (fullUrl === 'api.topics.example.com') {
    return res.redirect(301, 'example.com');
  }
  return next();
});

, и это не сработало.Я также попробовал:

module.exports = function(app, hbs) {
    return {
        redirBadLinks: function(req,res,next){
            var fullUrl = req.protocol + '://' + req.get('Host') + req.originalUrl;
              if (fullUrl === 'http://sample.example.com') {
                res.redirect(301, 'example.com');
              }
              return;
        },
        ...

, и это тоже не работает

1 Ответ

0 голосов
/ 19 сентября 2019

Для начала это:

 if (fullUrl === 'sample.example.com')

никогда не будет совпадать ни в одном коде, потому что fullUrl начинается с req.protocol + '://'.Вы пытаетесь сравнить http://sample.example.com с sample.example.com

Я бы предложил сравнить только имя хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...