Как сделать переадресацию с http на https

3 августа 2026

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

Самый простой способ: настройки хостинга

Многие хостинг-провайдеры предлагают функцию автоматической переадресации на HTTPS в панели управления сайтом (например, cPanel, ISPmanager). Это самый простой способ: вам нужно найти раздел "SSL" или "Безопасность" и включить опцию "Принудительное перенаправление на HTTPS". Обычно это делается в несколько кликов.

Настройка на уровне веб-сервера

Этот способ более гибкий, но требует доступа к конфигурационным файлам сервера. Он идеален, если вы используете VPS или выделенный сервер.

Для Nginx

В конфигурационном файле виртуального хоста (например, /etc/nginx/sites-available/default) нужно создать два блока server. Один — для HTTP-трафика, который будет перенаправлять на HTTPS, и второй — для самого HTTPS-сайта

server {
    listen 80;
    server_name example.com; # Замените на ваш домен
    return 301 https://$host$request_uri; # Постоянное перенаправление
}

server {
    listen 443 ssl;
    server_name example.com; # Замените на ваш домен

    # Пути к SSL-сертификатам
    ssl_certificate /путь/к/вашему/сертификату.crt;
    ssl_certificate_key /путь/к/вашему/ключу.key;

    # Остальная конфигурация вашего сайта
    root /var/www/html;
    index index.html index.php;
    # ...
}

После внесения изменений обязательно проверьте конфигурацию (sudo nginx -t) и перезагрузите Nginx.

Для Apache

Если ваш сайт работает на Apache, вы можете добавить правила в файл .htaccess в корневой папке сайта

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • R=301 означает "постоянно перемещено", что важно для SEO.
  • L — это последнее правило в текущем цикле обработки.

Для IIS (Windows)

Если ваш сайт работает на Windows-сервере с IIS, переадресация настраивается через файл web.config в корневой папке. Нужно добавить правило для URL Rewrite Module:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webserver>
        <rewrite>
            <rules>
                <rule name="Redirect to https" stopprocessing="true">
                    <match url="(.*)"></match>
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignorecase="true"></add>
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirecttype="Permanent"></action>
                </rule>
            </rules>
        </rewrite>
    </system.webserver>
</configuration>

Дополнительные способы

  • На уровне CDN или облачного балансировщика: Если вы используете такие сервисы, как Cloudflare, Azure Front Door или AWS CloudFront, там обычно есть настройки "Always Use HTTPS" или правила для создания редиректов.
  • На уровне CMS: Некоторые системы управления контентом, как WordPress, позволяют настроить переадресацию через плагины (например, "Really Simple SSL").
  • На уровне кода: В крайнем случае, можно использовать PHP-код на каждой странице, но это неэффективно и медленно

Важные моменты

  • Наличие SSL-сертификата: Настройка редиректа имеет смысл только после того, как на вашем сайте уже установлен и работает SSL-сертификат.
  • Тип редиректа: Для перехода на HTTPS настоятельно рекомендуется использовать постоянный редирект с кодом 301. Это говорит поисковым системам, что страницы окончательно переехали на новые HTTPS-адреса.
  • SEO-рекомендации: После настройки редиректа обновите свой сайт в Google Search Console и убедитесь, что канонические ссылки (rel="canonical") и карта сайта (sitemap.xml) ведут уже на HTTPS-версии страниц

Если сайт обслуживается на Cloudflare, то есть два основных способа, настоятельно рекомендую первый

Способ 1: Делегировать редирект Cloudflare (РЕКОМЕНДУЕТСЯ)

Это самый простой и эффективный метод. Вы просто включаете нужную опцию в панели Cloudflare, а правила в .htaccess удаляете.

  1. Удалите добавленный вами код редиректа из файла .htaccess. Оставьте его пустым или только с теми правилами, которые не касаются HTTPS.
  2. Войдите в панель управления Cloudflare для вашего сайта.
  3. Перейдите в раздел SSL/TLS > Edge Certificates.
  4. Найдите опцию "Always Use HTTPS" и включите её (переключите в положение "On").

Теперь все HTTP-запросы будут перенаправляться на HTTPS непосредственно на "границе" Cloudflare, и ваш сервер даже не будет знать о них, что полностью исключает цикл.

Способ 2: Модифицировать правило в .htaccess (менее надежно)

Если по какой-то причине вы не можете использовать первый способ, можно изменить правило, чтобы оно проверяло заголовок, который Cloudflare добавляет к запросу — X-Forwarded-Proto. Он сообщает, по какому протоколу пользователь изначально обратился к Cloudflare.

Замените ваш текущий код данной переадресации в .htaccess на этот:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Это правило сработает и перенаправит на HTTPS только в том случае, если пользователь обратился к Cloudflare по HTTP (X-Forwarded-Proto: http). Если пользователь уже использует HTTPS, этот заголовок будет https, и правило не выполнится, останавливая цикл

Проверьте настройки SSL/TLS

Независимо от выбранного способа, убедитесь, что в Cloudflare в разделе SSL/TLS > Overview у вас стоит режим Full (strict) или Full. Режим Flexible часто и является причиной таких проблем. Если у вас не установлен SSL-сертификат на сервере, то для корректной работы выберите режим Full

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

Telegram: @st_LBuser E-mail: [email protected]