23.06.2025

Как настроить HTTPS Redirect с сайта?

Часто боты поисковиков хранят у себя закешированную информацию о страницах сайта, что приводит пользователя к пустой странице или пользователь переходит по небезопасному протоколу HTTP вместо шифрованного HTTPS.

Для этих случаев существует перенаправление или редирект с одной страницы сайта на другие домен/страницу, реализовать его можно на разных этапах. В данном материале рассмотрим основные способы и случаи!

Редирект с HTTP на HTTPS

Подключение по HTTP протоколу давно не считается эталонном безопасной коммуникации, поэтому многие сервисы уже используют повышение до HTTPS, шифрованного соединения поверх классического.

В Apache и Nginx существуют правила, которые позволяют управлять виртуальными хостами и сервером в целом. Для настройки подобного повышения URL-схемы с HTTP до HTTPS, необходимо перейти в конфигурационные файлы виртуального хоста и настроить правила обработки трафика:

sudo nano /etc/nginx/sites-available/default

По умолчанию, конфигурационный файл называется default, если в вашем случае по-другому, то замените его. Добавьте конфигурацию:

server {
listen 80;
server_name example.com;
return 301 https://$host;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/keys/subkeys/certificate.crt;
ssl_certificate_key /etc/nginx/keys/subkeys/private.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}

Скриншот № 1 — Конфигурация c HSTS

Виртуальные хосты разделены на логические блоки server, где внутри содержат политики обработки трафика. Таким образом, если первый блок получает сетевой пакет на порт 80, что классически HTTP, то он вернет директивой return 301 требование браузеру зайти на сайт, который уже будет с схемой HTTPS.

Обратите внимание, что кроме классических настроек добавляется заголовок Strict-Transport-Security, который выдает браузерам пользователей метку, о том что необходимо принудительно устанавливать HTTPS соединение вместо не безопасного. Данная функция позволяет митигировать атаку HTTP downgrade, которая позволяет снизить подключение клиента до небезопасного протокола, без аутентификации и проверок целостности, технически тем же return 301!

Проверим работоспособность нашего сервиса и настроенного ранее редиректа:

Скриншот № 2 — Проверка работоспособности редиректа

Однако если мы не хотим отправлять пользователю коды о перенаправлении, то существуют отличная альтернатива внутреннего редиректа.

Внутренний редирект

Для обработки трафика в nginx существует целый массив директив, который позволяет реализовать еще одно перенаправление. В данном случае веб-сервер самостоятельно внутри себя перенаправит запрос и обработает его выдав корректный ответ. Синтаксис директивы представлен следующим образом:

server {
listen 80;
server_name example.com;
location / {
internal_redirect @check_antivirus;
}
location @check_antivirus {
internal;
root /var/www/html
}
location /url {
internal_redirect /newurl;
}
location /newurl {
internal;
root /var/www/html
}
}

Скриншот № 3 — Внутреннее перенаправление

В данном примере, когда трафик приходит на пути / и /url, то произойдет внутреннее перенаправление на другой путь с сохранением оставшейся части пакета. К примеру ваш запрос был по пути /url/new/id?customer=675, а станет /newurl/new/id?customer=675. Примеры указывают, что можно использовать именованный @location или путь. После внесения изменений, не забывайте проверить конфигурацию командой:

sudo nginx -t

Скриншот № 4 — Тест конфига

Обратите внимание, что функционал данной директивы появился в версии Nginx (1.23.4)!

Сама логика редиректа может хранится не только на сервере, но и в передаваемых JS/HTML формах!

Перенаправление через HTML/JS

Чтобы реализовать логику перенаправления в браузере необходимо использовать директивы вида:

<head>
<meta http-equiv="refresh" content="0;URL=http://site.ru" />
</head>

Фактически в браузере существует обработчик, который позволяет считать строки в HTML и в соответствии с директивами выполнить действие, в данном случае, заложена директива перенаправления. Где http-equiv=”refresh” указывает на необходимость перезагрузки страницы, content=”0;URL=http://site.ru” через 0 секунд по URL вида http://site.ru.

Скриншот № 5 — HTTP redirect

Для JS существует набор функций, которые могу позволить клиенту самостоятельно подключиться к иному ресурсу, в данном случае функционал более обширный:

window.location = 'https://www.example.com';\

В строке представлено прямое перенаправление без условий, где открывается новое соединение, вместо уже существующего. А во втором случае ниже, должно выполниться логическое условие, которое, так же перенаправит пользователя.

if (CONDITION) { window.location.href = 'https://www.example.com'; }

Возможности в вебе по управлению логикой обработки трафика, максимально обширны, на каждом их этапов, начиная от браузера и его обработчиков HTML/JS, заканчивая веб-сервером с директивами! Для выполнения тестов, вы можете использовать изолированную среду VPS сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать.

Скриншот №6 — Создание сервера

Потребуется некоторое время для развертывания серверных мощностей. После чего вы можете подключиться любым из удобных способов.