我正在尝试将非www网址重定向到我的Node JS / Express应用程序中的www。
以下代码段成功执行了301重定向
function checkUrl(req, res, next) {
let host = req.headers.host;
if (host.match(/^www\..*/i)) {
next();
} else {
res.redirect(301, "https://www." + host + req.url);
}
}
我照原样使用
app.all('*', checkUrl);
不涉及的是http
至https
。我可以通过自己的功能来做到这一点
function ensureSecure(req, res, next) {
if (req.headers['x-forwarded-proto'] === 'https') {
return next();
}
return res.redirect('https://' + req.hostname + req.url);
}
如何将两者结合在一起,以便涵盖两种情况
答案 0 :(得分:2)
借助express,您可以使用app.use
对每个请求运行中间件。因此,结合您已经取得的成就
function checkUrl(req, res, next) {
let host = req.headers.host;
if (!host.match(/^www\..*/i)) {
return res.redirect(301, "https://www." + host + req.url);
} else if (req.headers['x-forwarded-proto'] !== 'https') {{
return res.redirect('https://' + req.hostname + req.url);
}
next();
}
app.use(checkUrl);