Ошибка ERR_TOO_MANY_REDIRECTS — одна из самых неприятных проблем, с которой сталкиваются разработчики и администраторы сайтов на WordPress. Она возникает, когда браузер попадает в бесконечный цикл перенаправлений, и страница не загружается. В этой статье мы подробно разберем причины возникновения ошибки, методы ее диагностики, а также практические способы исправления с примерами кода и полезными плагинами.
Что вызывает ошибку ERR_TOO_MANY_REDIRECTS в WordPress
Основной причиной появления данной ошибки является неправильная настройка редиректов, которая приводит к циклическому перенаправлению между URL. К распространённым причинам относятся:
- Неправильные настройки URL сайта (siteurl и home) в базе данных или в файле wp-config.php;
- Ошибки в правилах .htaccess, особенно при использовании плагинов для SEO или кеширования;
- Конфликты плагинов, которые управляют редиректами или безопасностью;
- Проблемы с SSL-сертификатом и принудительным переходом с http на https и обратно;
- Неверные настройки прокси-сервера или CDN.
Чтобы эффективно устранить ошибку, необходимо последовательно проверить и исключить каждую из возможных причин.
Проверка и исправление настроек URL сайта
Первый шаг — убедиться, что параметры siteurl и home совпадают и корректны. Их можно проверить в админке WordPress в разделе "Настройки > Общие". Но если ошибка не позволяет зайти в админку, сделайте это через базу данных или wp-config.php.
Проверка через базу данных
Подключитесь к базе данных через phpMyAdmin или любой другой клиент и выполните запрос:
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');Если значения отличаются или содержат неправильный протокол (http/https), исправьте их:
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'siteurl' OR option_name = 'home';Замените https://example.com на URL вашего сайта.
Исправление через wp-config.php
Если доступ к базе данных затруднен, можно жестко задать значения в файле wp-config.php:
define('WP_DEBUG_siteurl', 'https://example.com');
define('WP_DEBUG_home', 'https://example.com');Это временное решение, позволяющее обойти ошибку и зайти в админку.
Проверка и очистка файла .htaccess
Неправильные правила в файле .htaccess часто становятся причиной циклических редиректов. Особенно это касается сайтов с включенным SSL и плагинами SEO.
Чтобы проверить, временно переименуйте файл .htaccess в .htaccess_backup и попробуйте загрузить сайт. Если ошибка пропала, причина в правилах.
Для стандартной работы WordPress в корневом каталоге .htaccess должен содержать:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressЕсли вы используете SSL, добавьте перенаправление с http на https:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]Но будьте осторожны, чтобы не создать конфликт с правилами плагинов.
Диагностика конфликтов плагинов и тем
Иногда ошибка возникает из-за конфликтов плагинов, которые управляют редиректами, кешированием или безопасностью. Чтобы проверить, деактивируйте все плагины, переименовав папку wp-content/plugins (например, в plugins_backup), и проверьте работу сайта.
Если ошибка исчезла, включайте плагины по одному, чтобы выявить виновника.
Особое внимание уделите плагинам, таким как Redirection, Yoast SEO, Clearfy Pro, а также кеширующим плагинам, например, WP Super Cache или W3 Total Cache.
Использование плагинов для управления редиректами
Для удобного управления и диагностики редиректов можно использовать плагин Redirection. Он позволяет создавать и отслеживать все перенаправления, что помогает избежать циклов.
Пример добавления редиректа через API плагина Redirection:
function wpdebug_add_redirect() {
if ( class_exists('Red_Item') ) {
$redirect = new Red_Item();
$redirect->source_url = '/old-page/';
$redirect->target_url = '/new-page/';
$redirect->match_type = 'url';
$redirect->action_type = 'url';
$redirect->status_code = 301;
$redirect->save();
}
}
add_action('init', 'wpdebug_add_redirect');Этот код добавит 301 редирект со страницы /old-page/ на /new-page/.
Исправление проблем с SSL и https
Частая причина циклов редиректов — конфликт между http и https. Например, если сайт принудительно переходит на https, а в настройках прописан http, браузер может попасть в цикл.
Для устранения используйте плагин Clearfy Pro, который умеет корректно настроить https и устранить конфликтные правила.
Также можно добавить в wp-config.php следующий код для правильного определения SSL:
function wpdebug_force_ssl() {
if ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
$_SERVER['HTTPS'] = 'on';
}
}
add_action('plugins_loaded', 'wpdebug_force_ssl');Этот код помогает корректно работать сайту за прокси или CDN, передающим https через заголовок X-Forwarded-Proto.
Логирование и отладка перенаправлений
Для детальной отладки можно включить логирование редиректов. В WordPress добавьте следующий код в файл functions.php вашей темы или в плагин:
function wpdebug_log_redirects() {
if ( headers_sent() ) {
return;
}
$location = wp_get_redirect_url();
if ( $location ) {
error_log('Redirect to: ' . $location);
}
}
add_action('template_redirect', 'wpdebug_log_redirects');Логи ошибок помогут понять, куда именно идет перенаправление и выявить циклы.
Итоговые рекомендации
- Проверьте и исправьте настройки
siteurlиhome; - Очистите и упорядочите правила в
.htaccess; - Деактивируйте плагинов поочередно, выявляя конфликтные;
- Используйте плагины Redirection и Clearfy Pro для управления редиректами и настройки SSL;
- Включите логирование для отладки циклов перенаправлений;
- Проверьте настройки прокси и CDN.