[英]Sails.JS how to redirect non-WWW to WWW along with forwarding HTTP to HTTPS
我尝试使用此代码:
配置/ 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
)
有关此主题的更多信息,请参见sails文档 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.