Переадресации — частая проблема после обновления или установки плагинов в WordPress. Особенно это проявляется, когда плагин меняет структуру URL, правила перезаписи или добавляет собственные редиректы. В итоге вместо ожидаемой страницы пользователь сталкивается с бесконечным циклом переадресаций или ошибками 301/302.
Почему возникают лишние переадресации после обновления плагина
Проблема может быть вызвана несколькими факторами:
- Неправильные правила .htaccess или конфликты между ними и настройками плагина.
- Плагины SEO и кэширования, которые добавляют свои редиректы.
- Плагины для ЧПУ (человеко-понятных URL), меняющие структуру ссылок.
- Конфликт с настройками постоянных ссылок (Permalinks) в WordPress.
- Ошибки в коде плагина, добавляющем редиректы через фильтры или хуки.
Для поиска источника проблемы нужно последовательно исключать возможные причины и тестировать сайт.
Как диагностировать источник переадресаций
Отключение плагинов
Первое, что нужно сделать — временно отключить все плагины и проверить, сохраняется ли проблема. Если переадресации пропали — значит, виноват один из плагинов. Включайте их по одному и проверяйте заново.
Проверка файла .htaccess
Файл .htaccess может содержать правила, которые конфликтуют с новыми настройками. Для проверки временно переименуйте его, создав резервную копию. Если переадресации пропали — причина в правилах. В таком случае восстановите базовый стандартный .htaccess для WordPress:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPressОтладка с помощью плагина Redirection
Плагин Redirection позволяет отслеживать и управлять редиректами. Он покажет, какие именно URL вызывают переадресации и куда они ведут. Это поможет понять, какой плагин или правило добавило редирект.
Как программно убрать лишние редиректы в functions.php
Если подозрения падают на код плагина, который добавляет редиректы через хуки WordPress, можно временно заблокировать их. Например, многие плагины используют хук template_redirect для редиректа пользователей.
Добавьте в файл functions.php вашей темы следующий код для отключения всех редиректов, запущенных на этом хуке:
function wpskills_disable_all_redirects() {
remove_all_actions('template_redirect');
}
add_action('init', 'wpskills_disable_all_redirects');Этот код отключит все редиректы, но будьте осторожны: он может нарушить работу некоторых плагинов. Используйте его для диагностики.
Отключение конкретного редиректа плагина
Если известно, какой именно плагин создает редирект с помощью определенной функции, можно отключить только ее. Например, если плагин вызывает функцию plugin_redirect_function() на событии template_redirect, добавьте:
function wpskills_remove_plugin_redirect() {
remove_action('template_redirect', 'plugin_redirect_function');
}
add_action('init', 'wpskills_remove_plugin_redirect');Чистка кэша и обновление пермалинков
После исправления редиректов рекомендуется:
- Очистить кэш всех кэш-плагинов (например, Clearfy Pro, WP Rocket, если они используются).
- Обновить настройки постоянных ссылок: в админке WordPress зайдите в Настройки – Постоянные ссылки и просто нажмите кнопку Сохранить изменения, чтобы сбросить правила перезаписи.
Пример: исправление переадресации, вызванной плагином SEO
Допустим, при обновлении плагина SEO появились бесконечные циклы редиректа. Анализ показал, что плагин добавляет редирект при совпадении URL.
Можно добавить фильтр, чтобы отключить его редирект на конкретной странице:
function wpskills_disable_seo_redirect_on_page() {
if (is_page('kontakt')) { // замените 'kontakt' на ваш slug страницы
remove_action('template_redirect', 'seo_plugin_redirect');
}
}
add_action('template_redirect', 'wpskills_disable_seo_redirect_on_page', 1);Так мы убираем ненужный редирект только на одной странице, сохраняя работу плагина в целом.
Рекомендации для предотвращения проблем с редиректами
Чтобы минимизировать проблемы с переадресациями при обновлении плагинов, придерживайтесь следующих правил:
- Перед обновлением делайте резервную копию сайта.
- Тестируйте обновления на копии сайта (стейджинг), а не сразу на рабочем ресурсе.
- Изучайте, какие редиректы добавляет плагин, читайте документацию.
- Используйте инструменты для мониторинга редиректов, например, плагин Redirection.
- Проверяйте и корректируйте настройки постоянных ссылок после обновлений.
Если вы используете плагины от WPSHOP, например Clearfy Pro, их функционал по управлению кэшем и оптимизации может помочь избежать подобных проблем.