将www重定向到Express服务器中的https

时间:2018-10-29 12:49:31

标签: node.js express

我已经安装了快速运行的服务器,但没有任何问题,但是如果我尝试将www.example.com路由到https,将会很困难。

我创建了https服务器,该服务器侦听默认端口443,并表示侦听默认端口80。

如果我输入example.com重定向到https://example.com,但是如果我输入www.example.com,则它不安全,因此在这里我需要重定向到https://examle.com。我尝试过但没有用的东西。

app.get( '/', function(req, res, next) {
     if((req.get('X-Forwarded-Proto') !== 'https')) {
        res.redirect('https://' + req.get('Host') + req.url);
    } else {
        next();
    }
})

这是我尝试过的简单代码

var enforce = require('express-sslify');

app.use(express.static('./dist/restraunt'));
app.use(enforce.HTTPS());
app.use(redirectUnmatched);

app.listen(port);
https.createServer(options, app).listen(443);

function redirectUnmatched(req, res) {
    res.redirect("https://example.com");
}

1 个答案:

答案 0 :(得分:0)

如果您要将www重定向到https,那么这里是解决方法

在您的app.js中输入以下代码

app.get('*', function (req, res, next) {

      var checkHost = req.get('host').substring(0, 4);
      var condition = req.get('x-forwarded-proto') !== "https" || checkHost !== 'www.' || ( req.get('host').indexOf('www.') < 0);//
      if (condition) {
          res.set('x-forwarded-proto', 'https');

          if (checkHost === 'www.' && ( req.get('host').indexOf('www.') >= 0)) {
              res.redirect('https://' + req.get('host') + req.url);
          }
          else {
              res.redirect('https://www.' + req.get('host') + req.url);
          }
      } else {
          next();
      }
    });