У меня есть сайт с экспресс-сервером NodeJS.Он размещен на Heroku.Мое доменное имя просто наблюдает за тем приложением heroku и открывает его, когда я запрашиваю домен моего сайта.
Я заметил, что когда я открываю свой сайт без www.в первый раз (например, с любого нового компьютера, где еще никто не посещал веб-сайт), он выбрасывает 403 запрещенных.И он не перенаправляет на https: // (SSL, сгенерированный Heroku автоматически).
Затем, когда я захожу на сайт с 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 Обязательно вводите его именно по этому адресу.
Спасибо