【发布时间】:2015-10-15 15:15:39
【问题描述】:
我已尝试使用此代码:
配置/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;
}
【问题讨论】:
-
我不知道如何在 Sails 中执行此操作,但我想说这可能是在负载均衡器级别使用 apache 或 nginx 更好地处理的问题。
标签: node.js redirect express https sails.js