В процессе работы с сайтом на WordPress нередки ситуации, когда необходимо изменить URL страниц или записей. При этом важно правильно настроить редирект, чтобы не потерять посетителей и не ухудшить позиции в поисковых системах. В этой статье разберём, как установить автоматический редирект на новый URL в WordPress с помощью популярных плагинов и собственных сниппетов кода.
Почему важен правильный редирект и какие бывают типы
Редирект — это перенаправление пользователя и поисковых роботов с одного URL на другой. Существует несколько типов редиректов:
- 301 (Permanent Redirect) — постоянный редирект, сигнализирует поисковикам о том, что страница навсегда перемещена на новый адрес.
- 302 (Temporary Redirect) — временный редирект, используется, если перенаправление временное.
Для SEO важно использовать именно 301-редирект при смене URL, чтобы поисковые системы правильно обновили индексацию и не потерялись позиции в выдаче.
Использование плагинов для автоматического редиректа в WordPress
Плагин Redirection
Redirection — один из самых популярных бесплатных плагинов для управления редиректами. Позволяет создавать правила редиректов вручную и автоматически отслеживать изменения URL.
- Установка и настройка просты.
- Есть возможность логировать 404 ошибки и быстро создавать редиректы.
- Поддерживает регулярные выражения для гибкой настройки.
Скачать и узнать подробнее можно на wpshop.ru.
Плагин Simple 301 Redirects
Ещё один легкий в использовании плагин, который позволяет быстро настроить 301 редиректы. Подходит для сайтов, где нужно просто перенаправить старые URL на новые без сложных правил.
Автоматический редирект при смене URL записи с помощью кода
Если вы хотите реализовать автоматический редирект без плагинов, можно использовать хук wpdream_redirect_old_url (назовём так для примера) на сохранение записи, чтобы сохранять старый URL и создавать правило редиректа.
Пример реализации в functions.php
function wpdream_redirect_old_url( $post_id ) {
// Проверяем, что это не автосохранение
if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
return;
}
// Получаем объект поста
$post = get_post( $post_id );
if ( !$post || $post->post_status !== 'publish' ) {
return;
}
// Получаем старый URL из метаполя
$old_url = get_post_meta( $post_id, '_wpdream_old_url', true );
// Получаем текущий URL
$new_url = get_permalink( $post_id );
if ( $old_url && $old_url !== $new_url ) {
// Сохраняем правило редиректа — здесь можно сохранить в базе или в .htaccess
// Для примера сохраним в опции
$redirects = get_option( 'wpdream_redirects', array() );
$redirects[ $old_url ] = $new_url;
update_option( 'wpdream_redirects', $redirects );
}
// Обновляем метаполе с текущим URL
update_post_meta( $post_id, '_wpdream_old_url', $new_url );
}
add_action( 'save_post', 'wpdream_redirect_old_url' );
Данный код при сохранении записи проверяет, изменился ли URL, и если да — сохраняет старый URL и новый в настройках сайта. Далее нужно добавить обработку редиректа на уровне шаблона или через хук template_redirect.
Обработка редиректа по сохранённым правилам
function wpdream_handle_redirects() {
$redirects = get_option( 'wpdream_redirects', array() );
$current_url = home_url( add_query_arg( array(), $_SERVER['REQUEST_URI'] ) );
if ( isset( $redirects[ $current_url ] ) ) {
wp_redirect( $redirects[ $current_url ], 301 );
exit;
}
}
add_action( 'template_redirect', 'wpdream_handle_redirects' );
Этот код проверяет текущий URL и если он есть в массиве редиректов — выполняет 301 редирект на новый URL.
Редиректы для WooCommerce: особенности и примеры
Если на вашем сайте установлен WooCommerce, смена URL товаров и категорий требует отдельного внимания. WooCommerce использует свой формат URL с таксономиями и слагами.
- Для автоматических редиректов при смене слагов категорий рекомендуем использовать плагин Clearfy Pro, который умеет автоматически создавать редиректы при смене URL товаров и категорий.
- При ручной смене URL товаров используйте фильтр
wpdream_redirect_old_url, описанный выше, адаптируя под посты типа product.
Как проверить и протестировать редиректы
После настройки редиректов важно проверить их корректность. Для этого используйте:
- Инструменты браузера: нажмите F12, перейдите на вкладку Network, и посмотрите статус ответа сервера при переходе по старому URL.
- Онлайн-сервисы: например, https://httpstatus.io/ позволяет проверить цепочку редиректов.
- Плагины для WordPress: Redirection ведёт логи 404 ошибок, что помогает выявлять сломанные ссылки.
Советы по безопасности и производительности
При использовании собственного кода для редиректов избегайте хранения большого количества правил в опциях без кеширования — это может замедлить сайт. Для больших проектов лучше использовать серверные правила в .htaccess или nginx.
Также не забывайте очищать устаревшие правила, чтобы не накапливался «мусор».