我有使用NodeJS Express服务器的网站。它托管在Heroku上。我的域名只是看着那个heroku应用程序,并在我询问我的网站域时打开它。
我注意到,当我打开没有www的网站时。第一次(例如,从任何一台没有人访问过网站的新计算机),它都禁止403。而且它不会重定向到https://(由Heroku自动生成的SSL)。
然后,当我输入带有www的网站时,它将打开并重定向到https://。然后,当我返回并打开它而不使用www。时,它已经重定向到https://,然后就可以正常工作了。
我尝试了所有这些方法使其正常工作:
const enforce = require('express-sslify');
export const app = express();
app.use(checkUrl);
app.use(enforce.HTTPS({ trustProtoHeader: true }));
const httpServer = http.createServer(app);
const httpsServer = https.createServer(app);
function checkUrl(req, res, next) {
const 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();
}
我希望我的网站一直都能重定向到https://www。 我想念什么?
这是网站-onrg.ru 确保您输入的正是这个网址。
谢谢