ERR_TOO_MANY_REDIRECTS: бесконечная цепочка редиректов в WordPress
ERR_TOO_MANY_REDIRECTS — ошибка, при которой браузер попадает в бесконечный цикл перенаправлений. Вместо страницы пользователь видит «Слишком много редиректов» или «ERR_TOO_MANY_REDIRECTS». Разберём причины и способы решения.
Почему возникает ошибка
Цикл редиректов — это когда страница А перенаправляет на Б, Б на В, а В снова на А. В WordPress это чаще всего происходит из-за несоответствия настроек HTTPS/HTTP или конфликта плагинов.
Основные причины:
- Неправильные настройки SSL — сайт принудительно редиректит HTTP→HTTPS, но внутри WordPress указан HTTP
- Плагины кэша и редиректов — WP Super Cache, W3 Total Cache или Redirection конфликтуют друг с другом
- Cloudflare Flexible SSL — известная проблема: Cloudflare принимает HTTPS, а серверу отдаёт HTTP
- Кривые правила .htaccess — ручные или плагинные редиректы зациклились
- Плагин безопасности — Wordfence, iThemes Security и другие могут накладывать свои редиректы поверх существующих
Диагностика
1. Проверка через браузер (Chrome/Edge DevTools)
Откройте DevTools (F12), вкладка Network, обновите страницу. Вы увидите цепочку запросов с кодом 301/302 — это и есть маршрут цикла.
2. Проверка .htaccess
Откройте корневой файл .htaccess через FTP или файловый менеджер хостинга:
# Ищите повторяющиеся Redirect/RewriteRule
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L] # ← зацикливание!
Два правила, которые друг друга отменяют — классическая причина.
3. Проверка siteurl и home через wp-admin или БД
Зайдите в Настройки → Общие (если доступно) и проверьте Адрес WordPress (URL) и Адрес сайта. Если один с https://, а другой с http:// — это гарантированный цикл.
Проверить через БД:
SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');
Исправить:
UPDATE wp_options SET option_value = 'https://вашсайт.ру' WHERE option_name IN ('siteurl', 'home');
Решения (от простого к сложному)
Решение 1: Очистить кэш браузера и сайта
Иногда браузер кэширует старые 301-редиректы.
# Очистить кэш WordPress (через WP-CLI, если установлен)
wp cache flush
Альтернатива — очистить кэш вручную: Настройки → Кэш → Очистить кэш (если стоит плагин кэширования).
Решение 2: Временно отключить плагины
Через FTP переименуйте папку wp-content/plugins:
# Через SSH
mv wp-content/plugins wp-content/plugins_disabled
Если сайт открылся — проблема в одном из плагинов. Возвращайте по одному, тестируя каждый.
Решение 3: Исправить Cloudflare Flexible SSL
Если используете Cloudflare в режиме Flexible SSL, установите плагин Cloudflare Flexible SSL или добавьте в wp-config.php:
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);
Или используйте Cloudflare-совместимый код:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Решение 4: Восстановить .htaccess
Создайте чистый .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Обновите постоянные ссылки: Настройки → Постоянные ссылки → Сохранить изменения — это пересоздаст .htaccess автоматически.
Решение 5: Исправить siteurl через wp-config.php
Добавьте в wp-config.php перед строкой «That’s all, stop editing»:
define('WP_HOME', 'https://вашсайт.ру');
define('WP_SITEURL', 'https://вашсайт.ру');
Это принудительно задаёт URL сайта, игнорируя значения из БД.
Профилактика
- Всегда используйте HTTPS везде — и в настройках WordPress, и в .htaccess
- Не устанавливайте два плагина с одинаковой функцией (например, два плагина редиректов)
- Перед сменой протокола (HTTP→HTTPS) убедитесь, что SSL-сертификат работает
- Делайте бэкап .htaccess и БД перед внесением изменений
- Используйте WP-CLI для проверки:
wp option get siteurl && wp option get home
Если ничего из перечисленного не помогло — проверьте логи веб-сервера (/var/log/nginx/error.log или /var/log/apache2/error.log). Иногда причина глубже — модуль mod_rewrite отключён на сервере, или Nginx неправильно настроен для обработки proxy_redirect.
