Что такое redirect cycling и почему он появляется после переноса WordPress
Redirect cycling (циклическая переадресация) — это ситуация, когда браузер постоянно перенаправляется между двумя или более URL, что приводит к ошибке «Too Many Redirects» или бесконечному циклу загрузки. В WordPress такая проблема часто возникает после переноса сайта на новый домен или хостинг. Основные причины — неправильные настройки URL, конфликт плагинов или ошибки в файле .htaccess.
Диагностика redirect cycling после переноса сайта
Для выявления причины редирект цикла выполните следующие шаги:
- Проверьте значения
siteurlиhomeв таблицеwp_optionsбазы данных. - Проанализируйте файл
.htaccessна предмет лишних правил редиректа. - Отключите все плагины, особенно кеширующие и SEO-плагины.
- Проверьте конфигурацию SSL и настройки HTTPS.
- Используйте инструменты браузера (DevTools > Network) для отслеживания цепочки редиректов.
Проверка URL в базе данных
SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');Значения должны соответствовать новому домену без лишних слэшей и протоколов.
Анализ цепочки редиректов
В командной строке выполните:
curl -I -L https://example.comОбратите внимание на повторяющиеся переходы между одними и теми же URL.
Пошаговое решение проблемы redirect cycling
1. Исправляем URL в базе данных
Если URL не совпадают с новым доменом, исправьте их через SQL или wp-cli:
wp option update home 'https://newdomain.com'
wp option update siteurl 'https://newdomain.com'2. Временное отключение плагинов
Переименуйте папку wp-content/plugins через FTP или SSH, чтобы отключить все плагины. Если редиректы пропали, включайте их по одному для выявления виновника.
3. Проверка файла .htaccess
Замените содержимое .htaccess на стандартный код WordPress:
# 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 WordPress4. Настройка HTTPS и SSL
Проверьте, не вызывает ли редирект цикл принудительное переключение с HTTP на HTTPS в коде или плагинах. Для теста временно отключите принудительные редиректы HTTPS.
5. Использование define в wp-config.php для жесткой установки URL
define('WP_HOME','https://newdomain.com');
define('WP_SITEURL','https://newdomain.com');Этот способ позволяет обойти проблемные записи в базе данных.
Проверка результата после внедрения решений
- Очистите кеш браузера и кеш на сервере (если используется).
- Выполните
curl -I -L https://newdomain.comи убедитесь, что цепочка редиректов не повторяется. - Проверьте сайт вручную, убедитесь, что он загружается без ошибок.
- Просмотрите логи сервера на предмет ошибок переадресации.
Частые ошибки при устранении redirect cycling
- Неправильный формат URL в базе данных: лишние слэши, отсутствие https:// или http:// приводят к циклам.
- Конфликт плагинов: два плагина одновременно пытаются принудительно редиректить на HTTPS или менять URL.
- Ошибки в .htaccess: неправильные правила перенаправления с регулярными выражениями.
- Закешированные старые редиректы: кеш браузера или серверный кеш мешают проверить изменения.
- Настройка HTTPS без сертификата или с ошибками: это может вызвать постоянные перенаправления.
Практические советы для предотвращения redirect cycling после переноса
- Перед переносом экспортируйте настройки URL и убедитесь, что они корректны.
- Используйте wp-cli для массового поиска и замены URL в базе данных:
wp search-replace 'http://olddomain.com' 'https://newdomain.com' --all-tables- Временно отключайте плагины, которые могут влиять на редиректы при тестировании.
- Используйте плагины для управления редиректами (например, Redirection), но настраивайте их аккуратно.
- Проверяйте файл
.htaccessи избегайте дублирующих правил. - Убедитесь в правильной настройке SSL и HTTPS, используйте плагины типа Really Simple SSL с осторожностью.
Сравнение способов решения redirect cycling
| Метод | Простота | Риск ошибок | Компромисс |
|---|---|---|---|
| Изменение URL в базе данных | Средняя | Низкий | Требуется доступ к базе и осторожность с поиском и заменой |
| Правка .htaccess | Средняя | Средний | Можно случайно сломать доступ к сайту |
| Отключение плагинов | Высокая | Низкий | Временное, нужно выявить конфликтующий плагин |
| Определение URL в wp-config.php | Простая | Низкий | Переопределяет базу, но не лечит корень проблемы |