Автоматические редиректы в WordPress — это механизм, который по умолчанию исправляет URL с ошибками, например, добавляет или убирает слеши, исправляет регистр, перенаправляет с несуществующих страниц на похожие. Хотя эта функция полезна для юзабилити, она иногда вызывает проблемы с SEO, кэшированием и совместимостью с плагинами. В этой статье разберём, как отключить или удалить автоматические редиректы в WordPress, чтобы избежать нежелательных перенаправлений.
Почему возникают автоматические редиректы в WordPress
WordPress по умолчанию использует функцию redirect_canonical(), которая анализирует текущий URL и перенаправляет на предполагаемо правильный, если URL не совпадает с каноническим. Это сделано для удобства пользователей и поисковых систем.
Однако бывают ситуации, когда этот механизм мешает работе сайта:
- Конфликты с плагинами кеширования (например, WP Rocket, W3 Total Cache)
- Проблемы с SEO, когда Google индексирует неправильные URL
- Перенаправления, которые нарушают логику кастомных маршрутов или REST API
Поэтому важно понимать, как именно WordPress реализует эти редиректы и способы их отключения.
Как отключить автоматические редиректы с помощью кода
Самый простой способ — отключить фильтр, который отвечает за редиректы. В WordPress это фильтр template_redirect с функцией redirect_canonical.
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpsetup_disable_redirect_canonical( $redirect_url ) {
if ( is_singular('post') ) {
// Отключаем редирект для постов
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpsetup_disable_redirect_canonical' );В этом примере редиректы отключены только для одиночных записей (постов). Вы можете изменить условие, чтобы отключить редиректы для других типов страниц или полностью:
add_filter( 'redirect_canonical', '__return_false' );Этот код полностью отключит автоматические редиректы WordPress.
Отключение редиректов для конкретных URL или условий
Если нужно отключить редиректы выборочно, используйте условные теги WordPress:
function wpsetup_conditional_disable_redirect( $redirect_url ) {
if ( is_page('contacts') || is_post_type_archive('product') ) {
return false; // Отключаем редирект для страницы контактов и архива товаров
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpsetup_conditional_disable_redirect' );Такой подход позволяет гибко управлять поведением редиректов без глобального отключения.
Использование плагинов для управления редиректами
Если не хочется писать код, можно использовать плагины:
- Clearfy Pro — плагин для оптимизации WordPress, в котором есть опция отключения автоматических редиректов. Это удобно, если вы уже используете Clearfy для других задач. Подробнее на wpshop.ru.
- Disable Canonical URL Redirect — легковесный плагин, который полностью отключает функцию
redirect_canonical.
Преимущество плагинов в том, что можно быстро включать и выключать редиректы через админку без правок кода.
Проверка и отладка редиректов
Чтобы проверить, какие редиректы срабатывают, используйте инструменты:
- Плагины для браузера — например, Redirect Path для Chrome покажет цепочку редиректов.
- WP_DEBUG и добавление логов — можно подключить фильтр и записывать редиректы в журнал, чтобы понять, когда и почему они срабатывают:
function wpsetup_log_redirects( $redirect_url ) {
if ( $redirect_url ) {
error_log( 'Redirect to: ' . $redirect_url );
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpsetup_log_redirects', 10 );Так вы поймёте, какие URL вызывают перенаправления, и сможете точечно их отключить.
Особенности редиректов в связке с плагинами и темами
Некоторые плагины (например, WooCommerce, WPML) и темы могут добавлять свои редиректы поверх стандартных. Чтобы избежать конфликтов:
- Отключайте автоматические редиректы только после тестирования на тестовом сайте
- Проверяйте совместимость с кеширующими плагинами (WP Rocket, LiteSpeed Cache и др.)
- Используйте функции и хуки плагинов для управления редиректами, если такие есть
Так вы сохраните корректную работу сайта и сможете контролировать поведение URL.
Пример: отключение редиректов для REST API
REST API WordPress иногда страдает от автоматических редиректов, особенно если запросы идут с неправильным URL. Чтобы отключить редиректы для REST API, добавьте в functions.php:
function wpsetup_disable_redirect_for_rest( $redirect_url ) {
if ( defined('REST_REQUEST') && REST_REQUEST ) {
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'wpsetup_disable_redirect_for_rest' );Это предотвратит неожиданные перенаправления при обращении к API.
Итоговые рекомендации
Автоматические редиректы WordPress — полезный механизм, но в сложных проектах часто требуют управления или отключения. Для этого:
- Используйте фильтр
redirect_canonicalдля точечной настройки - Применяйте условные теги, чтобы не отключать редиректы глобально
- Тестируйте сайт после изменений, особенно при использовании кешей и плагинов
- Рассмотрите плагины типа Clearfy Pro для удобного управления
Так вы улучшите контроль над URL сайта, избежите проблем с SEO и совместимостью.