Представьте: сайт работает по HTTPS, но часть ссылок ведет на HTTP, и браузер блокирует загрузку. Или поисковик индексирует обе версии, размывая PageRank. Неправильный редирект убивает SEO и доверие пользователей. Каждый потерянный клиент из-за mixed content обходится бизнесу в среднем $1000. Наша задача — настроить единую HTTPS-версию с HSTS, чтобы исключить утечки трафика и downgrade-атаки. При правильной настройке SEO-трафик может вырасти до 15%, а время загрузки сократится на 30% за счет устранения лишних редиректов. Мы занимаемся этим 7 лет, выполнили более 120 проектов по миграции на HTTPS. Закажите настройку сегодня и получите бесплатный аудит конфигурации — наши инженеры проверят цепочку редиректов и состояние HSTS.
Почему одного редиректа недостаточно?
Редирект с HTTP на HTTPS — лишь первый шаг. Без HSTS браузер не запоминает требование, и при следующем заходе снова делает HTTP-запрос, потенциально уязвимый для man-in-the-middle. Кроме того, цепочка из нескольких редиректов (например, http → https://www → https:// без www) увеличивает время загрузки на 1–2 секунды и негативно влияет на Core Web Vitals. На практике каждый дополнительный редирект добавляет 50–100 мс к TTFB. Оптимальная схема: один редирект 301 с HTTP на HTTPS (с www или без) и сразу HSTS-заголовок.
Проблемы, которые решает правильный редирект
- Mixed content: когда HTTPS-страница подгружает скрипты или стили по HTTP. Это блокируется браузером, и функционал ломается. Мы проверяем все ресурсы и исправляем протокол.
- Downgrade-атаки: злоумышленник перехватывает HTTP-запрос и подменяет контент. HSTS с preload полностью исключает этот вектор.
- SEO-потери: двойная индексация, некорректные редиректы, потеря ссылочного веса. Мы настраиваем канонический URL и правильные статусы.
Как мы это делаем: стек и конфиги
Используем проверенные связки: Nginx + Laravel, Apache + WordPress, Cloudflare. Приводим конфигурации для каждого случая.
Nginx: редирект HTTP → HTTPS
# Редирект всего HTTP-трафика server { listen 80; listen [::]:80; server_name example.ru www.example.ru; location /.well-known/acme-challenge/ { root /var/www/certbot; } location / { return 301 https://example.ru$request_uri; } } # Редирект www → non-www (или наоборот) + HTTPS server { listen 443 ssl; server_name www.example.ru; ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem; return 301 https://example.ru$request_uri; } # Основной сервер server { listen 443 ssl http2; server_name example.ru; # ... } HSTS добавляем в основной сервер:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; Laravel: HTTPS в приложении
// AppServiceProvider + bootstrap/app.php public function boot(): void { if (app()->environment('production')) { URL::forceScheme('https'); } } ->withMiddleware(function (Middleware $middleware) { $middleware->trustProxies( headers: Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO, proxies: '*' ); }) Без trustProxies Laravel не видит, что запрос пришёл по HTTPS (Nginx → PHP по HTTP), и генерирует HTTP-ссылки. Это частая ошибка, которая может стоить недели индексации.
Apache: .htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] </IfModule> Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Cloudflare
В панели Cloudflare: SSL/TLS → Edge Certificates:
- Always Use HTTPS → включить
- HSTS → включить, max-age 12 месяцев
Проверка корректности редиректа
Используйте curl с флагами -I и -IL:
curl -I https://example.ru | grep -i strict curl -IL http://www.example.ru Должен вернуться заголовок Strict-Transport-Security: max-age=63072000; includeSubDomains; preload. Ожидается не более одного редиректа 301 (с www на non-www и HTTP на HTTPS). Если редиректов больше или появляется ошибка, значит цепочка не оптимизирована.
Как устранить mixed content?
После настройки редиректа проверьте консоль браузера на предмет блокировок. Используйте инструмент Screaming Frog для сканирования — он найдет все ресурсы, загружаемые по HTTP. Мы заменяем протокол в базе данных или используем Content-Security-Policy: upgrade-insecure-requests. Последний заставляет браузер автоматически апгрейдить HTTP-запросы до HTTPS. На одном из проектов это сократило время ручной правки с 8 часов до 10 минут.
Сравнение конфигураций для разных серверов
| Сервер | Скорость настройки | Гибкость | Риск ошибок |
|---|---|---|---|
| Nginx | 15-30 мин | Высокая | Низкий (при правильном синтаксисе) |
| Apache | 10-20 мин | Средняя | Средний (из-за контекстов) |
| Cloudflare | 5 мин | Низкая | Низкий (настройки через GUI) |
| Laravel | +10 мин | Средняя | Высокий (trustProxies часто забывают) |
Nginx быстрее обрабатывает редиректы: до 30% меньше overhead по сравнению с Apache mod_rewrite.
Чек-лист: что проверить после настройки
| Шаг | Команда / способ | Ожидаемый результат |
|---|---|---|
| Проверка HTTP → HTTPS | curl -I http://example.ru | Status 301, Location: https://... |
| Проверка www → non-www | curl -I https://www.example.ru | Status 301 или сразу 200 |
| HSTS заголовок | curl -I https://example.ru | Strict-Transport-Security присутствует |
| Mixed content | Открыть в браузере, консоль | Нет блокировок |
| TrustProxies (Laravel) | Проверить generated URL | Все ссылки https |
Что входит в настройку
- Аудит текущей конфигурации: проверка редиректов, HSTS, mixed content
- Настройка сервера (Nginx/Apache) или Cloudflare
- Добавление HSTS с настройкой max-age и preload
- Исправление mixed content в коде и базе данных
- Проверка цепочки редиректов и SEO-метрик
- Документация по выполненным работам
- Гарантия поддержки 30 дней после деплоя
Процесс работы: от аудита до деплоя
- Аналитика: проверяем текущие редиректы, HSTS, mixed content, SEO-метрики.
- Проектирование: выбираем схему (www vs non-www, поддомены), планируем цепочку.
- Реализация: настраиваем конфиги сервера, добавляем HSTS, обновляем приложение.
- Тестирование: curl, browser console, SEO-инструменты (Screaming Frog).
- Деплой: выкатываем в продакшн с постепенным увеличением max-age HSTS.
Сроки
- Базовая настройка Nginx/Apache с HSTS — от 1 часа.
- Комплексная настройка с Laravel, Cloudflare и устранением mixed content — от 4 часов.
- Стоимость рассчитывается индивидуально. Инженеры оценивают проект бесплатно.
Свяжитесь с нами — проведем аудит и подготовим конфигурацию. Закажите настройку сегодня и получите бесплатную консультацию. Мы на связи.
Согласно документации MDN HSTS







