Node.js Sails.JS如何将非WWW重定向到WWW以及将HTTP转发到HTTPS

Node.js Sails.JS如何将非WWW重定向到WWW以及将HTTP转发到HTTPS,node.js,redirect,express,https,sails.js,Node.js,Redirect,Express,Https,Sails.js,我尝试使用以下代码: config/http.js middleware: { order: [ 'redirectToWWW', 'startRequestTimer', 'cookieParser', 'session', 'myRequestLogger', 'bodyParser', 'handleBodyParserError', 'compress',

我尝试使用以下代码:

config/http.js

  middleware: {

    order: [
       'redirectToWWW',
       'startRequestTimer',
       'cookieParser',
       'session',
       'myRequestLogger',
       'bodyParser',
       'handleBodyParserError',
       'compress',
       'methodOverride',
       'poweredBy',
       '$custom',
       'router',
       'www',
       'favicon',
       '404',
       '500'
    ],

  redirectToWWW: function(req, res, next) {
        var host = req.header("host");
        if (host.match(/^www\..*/i)) {
          next();
        } else {
          res.redirect(301, "https://www." + host);
        }
  }
它工作正常,但如果我访问站点/页面,它会将我重定向到站点的索引,而不是站点/页面的版本。转到站点会重定向到站点的版本

在config/bootstrap.js中,我将端口从HTTP转发到HTTPS(它应该可以正常工作),因此我不确定这是否是导致问题的原因

if (sails.config.ssl && sails.config.ssl.key && sails.config.ssl.cert) {
        require('express')()
            .get('*', function (req, res) {
                if (sails.config.httpsPort != 443) hostname += ':' + sails.config.httpsPort;
                res.redirect('301', 'https://' + hostname + req.originalUrl)
            }).listen(sails.config.httpPort);
        sails.config.port = sails.config.httpsPort;
    } else {
        sails.config.port = sails.config.httpPort;
    }

我知道这是一个迟到的答复,但这是我最近遇到的一个问题

完全按照您正在执行的操作,但您还需要将请求url附加到重定向:

redirectToWWW: function(req, res, next) {
  var host = req.header("host");
  if (host.match(/^www\..*/i)) {
    next();
  } else {
    res.redirect(301, "https://www." + host + req.url);
  }
}
追加req.url包括路径和参数(例如,
/foo/bar?id=bla


有关该主题的更多信息,请参阅。

我知道这是一个迟到的答复,但这是我最近遇到的一个问题

完全按照您正在执行的操作,但您还需要将请求url附加到重定向:

redirectToWWW: function(req, res, next) {
  var host = req.header("host");
  if (host.match(/^www\..*/i)) {
    next();
  } else {
    res.redirect(301, "https://www." + host + req.url);
  }
}
追加req.url包括路径和参数(例如,
/foo/bar?id=bla


有关此主题的更多信息,请参阅。

我没有关于如何在sails中执行此操作的答案,但我想说,这可能是apache或nginx在负载平衡器级别处理得更好的方法。我没有关于如何在sails中执行此操作的答案,但我想说,这可能是apache或nginx在负载平衡器级别处理得更好的方法。