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

标签 node.js redirect express https sails.js

我尝试过使用此代码:

配置/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);
        }
  }

它工作正常,但如果我到达站点/页面,它会将我重定向到站点索引而不是 https://www网站/页面的版本。访问站点重定向至 https://www网站版本。

在 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)

有关该主题的更多信息可以在the sails documentation中找到.

关于node.js - Sails.JS 如何将非 WWW 重定向到 WWW 以及将 HTTP 转发到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619163/

相关文章:

mysql - 怎么解决? ER_BAD_FIELD_ERROR : Unknown column 'undefined' in 'field list'

javascript - Socket.IO ( nodejs ) 中的 Windows Phone 支持

node.js - 创建 nodejs cli 选择/选项菜单

node.js - Node.js 中的 Python 'from ... import *'

javascript - 如何跳过 csv 中的标题并解析列?

.htaccess - 在 htaccess 中使用正则表达式进行 301 重定向

php - curl - 等待几秒钟后获取重定向网址

reactjs - React redirect - 在react-router-dom上重定向组件

mysql - NodeJS 如何处理对 MySQL 的并发请求

javascript - Express js 路由 - 重叠参数