Переход на HTTPS — обязательное требование для современных сайтов. Поисковые системы отдают приоритет защищённым страницам, браузеры помечают HTTP как небезопасный. Редирект с HTTP на HTTPS обеспечивает единую каноническую версию URL и сохраняет ссылочный вес. В этой статье — готовые решения для популярных платформ.
Зачем нужен редирект HTTP → HTTPS
| Причина | Описание |
|---|---|
| SEO | Google индексирует HTTPS как основной URL; без редиректа возможны дубли |
| Безопасность | Шифрование трафика, защита от перехвата данных |
| Доверие | Браузеры показывают замок для HTTPS |
| Требования | Многие API и функции браузера работают только по HTTPS |
Редирект должен быть 301 (постоянный) — так поисковики перенесут индексацию на HTTPS и передадут ссылочный вес.
Apache (.htaccess)
Вариант 1: mod_rewrite
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вариант 2: mod_alias (если mod_rewrite недоступен)
Redirect 301 / https://example.com/
Ограничение: Redirect с путём / перенаправляет всё на корень. Для сохранения пути используйте mod_rewrite.
Полный пример с www
Если канонический домен — https://example.com (без www):
RewriteEngine On
RewriteBase /
# Сначала HTTP → HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Затем www → без www (если нужно)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
Проверить цепочку редиректов можно через инструмент проверки редиректов reChecker. Убедитесь, что http://example.com и http://www.example.com оба ведут на https://example.com с кодом 301.
Nginx
Базовый редирект
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# ... SSL-настройки и location
}
$host сохраняет исходный хост (с www или без), $request_uri — путь и query string.
Редирект на канонический домен (без www)
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
# ... основной конфиг
}
WordPress
WordPress хранит URL сайта в базе данных. После перехода на HTTPS нужно обновить настройки.
1. Обновить URL в настройках
Настройки → Общие:
- Адрес WordPress (URL):
https://example.com - Адрес сайта (URL):
https://example.com
2. Редирект через .htaccess
Если WordPress использует Apache, добавьте в начало .htaccess (перед правилами WordPress):
# Редирект HTTP → HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3. Редирект через плагин
Плагины Really Simple SSL или Redirection автоматически добавляют редирект. Really Simple SSL также обновляет mixed content (заменяет http:// на https:// в контенте).
4. Редирект в wp-config.php (если .htaccess недоступен)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301);
exit;
}
Внимание: этот способ создаёт редирект на уровне PHP — менее эффективен, чем на уровне веб-сервера. Предпочтительно настроить редирект в Apache или Nginx.
Проверка после настройки
- Цепочка редиректов — проверка редиректов reChecker: введите
http://example.comи убедитесь, что финальный URL —https://example.comс кодом 301. - SSL-сертификат — SSL Checker: сертификат должен быть валидным, без ошибок и с корректной цепочкой доверия.
- Смешанный контент — откройте страницу по HTTPS и проверьте консоль браузера (F12): не должно быть запросов к
http://.
Типичные проблемы
| Проблема | Решение |
|---|---|
| Бесконечный цикл редиректов | Проверить порядок правил; убедиться, что HTTPS не редиректит обратно на HTTP |
| 404 после редиректа | Проверить, что SSL-сертификат установлен и Nginx/Apache слушает порт 443 |
| Смешанный контент | Обновить URL в базе; использовать плагин или поиск-замену http:// на https:// в контенте |
| Редирект не срабатывает | Очистить кэш браузера; проверить, что правила .htaccess/Nginx применяются (нет конфликтов) |
Итог
Редирект HTTP → HTTPS настраивается на уровне веб-сервера (Apache или Nginx) с кодом 301. Для WordPress дополнительно обновите URL в настройках и при необходимости используйте плагин для исправления mixed content. После настройки проверьте цепочку редиректов и валидность SSL-сертификата.