Загрузка...
Загрузка...
Диагностика и устранение бесконечного цикла редиректов (redirect loop). Причины, типичные сценарии и пошаговые решения для Apache, Nginx и WordPress.
SEOНастройка редиректа с www на основной домен (и наоборот) для Apache, Nginx, Cloudflare. Выбор канонического домена и готовые примеры.
БезопасностьПошаговое руководство по установке бесплатных SSL-сертификатов Let's Encrypt на Apache и Nginx. Certbot, автообновление, wildcard. Практический гайд для веб-мастеров.
DevOpsПолная настройка SSL/TLS в Nginx: установка Certbot, server block, HSTS, OCSP stapling, cipher suites, редирект HTTP на HTTPS.
Поделитесь с коллегами или изучите другие материалы блога
Переход на HTTPS — обязательное требование для современных сайтов. Поисковые системы отдают приоритет защищённым страницам, браузеры помечают HTTP как небезопасный. Редирект с HTTP на HTTPS обеспечивает единую каноническую версию URL и сохраняет ссылочный вес. В этой статье — готовые решения для популярных платформ.
| Причина | Описание |
|---|---|
| SEO | Google индексирует HTTPS как основной URL; без редиректа возможны дубли |
| Безопасность | Шифрование трафика, защита от перехвата данных |
| Доверие | Браузеры показывают замок для HTTPS |
| Требования | Многие API и функции браузера работают только по HTTPS |
Редирект должен быть 301 (постоянный) — так поисковики перенесут индексацию на HTTPS и передадут ссылочный вес.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Redirect 301 / https://example.com/
Ограничение: Redirect с путём / перенаправляет всё на корень. Для сохранения пути используйте mod_rewrite.
Если канонический домен — 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.
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.
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 хранит URL сайта в базе данных. После перехода на HTTPS нужно обновить настройки.
Настройки → Общие:
https://example.comhttps://example.comЕсли WordPress использует Apache, добавьте в начало .htaccess (перед правилами WordPress):
# Редирект HTTP → HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Плагины Really Simple SSL или Redirection автоматически добавляют редирект. Really Simple SSL также обновляет mixed content (заменяет http:// на https:// в контенте).
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.
http://example.com и убедитесь, что финальный URL — https://example.com с кодом 301.http://.| Проблема | Решение |
|---|---|
| Бесконечный цикл редиректов | Проверить порядок правил; убедиться, что HTTPS не редиректит обратно на HTTP |
| 404 после редиректа | Проверить, что SSL-сертификат установлен и Nginx/Apache слушает порт 443 |
| Смешанный контент | Обновить URL в базе; использовать плагин или поиск-замену http:// на https:// в контенте |
| Редирект не срабатывает | Очистить кэш браузера; проверить, что правила .htaccess/Nginx применяются (нет конфликтов) |
Редирект HTTP → HTTPS настраивается на уровне веб-сервера (Apache или Nginx) с кодом 301. Для WordPress дополнительно обновите URL в настройках и при необходимости используйте плагин для исправления mixed content. После настройки проверьте цепочку редиректов и валидность SSL-сертификата.