Как найти и убрать старые редиректы в WordPress без потери SEO

Старые редиректы в WordPress обычно появляются незаметно: меняли структуру ссылок, переносили сайт, ставили SEO-плагин, потом отключали его, а правила в .htaccess или в базе остались. В итоге поисковик и пользователь проходят лишнюю цепочку переходов, а вы не всегда понимаете, кто именно отдает редирект — сервер, тема, плагин или сам WordPress.

Задача здесь не просто «удалить все редиректы», а найти лишние, проверить цепочки и убрать только то, что больше не нужно. Это особенно важно, если на сайте уже были миграции, смена ЧПУ или массовые правки URL.

Когда редирект действительно лишний

Не каждый редирект нужно удалять. Если старая страница переехала на новый адрес и старый URL уже в индексе, 301-редирект остается нормальным решением. Проблема начинается, когда:

  • редирект ведет на редирект, а не сразу на конечный URL;
  • один и тот же URL перенаправляется разными правилами в разных местах;
  • редирект остался после удаления плагина или смены темы;
  • старые правила мешают открывать новые страницы с тем же слагом;
  • редирект срабатывает на технические адреса, которые уже не существуют и не должны обрабатываться.

Типичный симптом

В браузере страница открывается, но медленно. В отчете краулера видно цепочку 301 → 301 → 200 или даже 302 → 301 → 200. На мобильных и медленных сетях это особенно заметно, потому что каждый лишний переход добавляет задержку.

Диагностика: где искать источник редиректа

Перед правками нужно понять, откуда именно идет перенаправление. В WordPress редирект может быть задан на уровне сервера, в плагине, в коде темы или через хук. Если менять не там, где проблема, можно получить конфликт правил и петлю.

Проверка через curl

Самый быстрый способ — посмотреть заголовки ответа. Команда покажет цепочку переходов и конечный адрес:

curl -I -L https://example.com/staryj-url/

Если нужно увидеть каждый шаг отдельно, уберите -L и проверьте ответ по очереди:

curl -I https://example.com/staryj-url/

Смотрите на заголовок Location. Если редирект отдает не WordPress, а сервер, это обычно видно сразу: ответ приходит до загрузки PHP.

Проверка в браузере и DevTools

Откройте вкладку Network и обновите страницу. В цепочке запросов видно, какой URL был первым, где произошел переход и какой ответ отдал конечный адрес. Это полезно, когда редирект срабатывает только для части URL — например, со слешем или без него.

Проверка в WordPress

Если редирект управляется кодом, ищите такие места:

  • функции wp_redirect() и wp_safe_redirect();
  • хуки template_redirect, init, wp_loaded;
  • SEO-плагины с собственными правилами перенаправления;
  • .htaccess или конфигурацию nginx;
  • кастомные mu-плагины и сниппеты в functions.php.

Пошаговое решение: как убрать старый редирект безопасно

Ниже рабочая последовательность, которая помогает не сломать уже существующую индексацию.

Шаг 1. Зафиксируйте текущие правила

Сначала сохраните копию .htaccess, конфигурации nginx и списка редиректов в SEO-плагине. Если что-то пойдет не так, откат будет быстрым. На живом сайте это не формальность: редиректы часто дублируются, и удаление одного правила не всегда достаточно.

Шаг 2. Найдите дублирующее правило

Если редирект задан в плагине и одновременно в серверной конфигурации, оставьте только одно место управления. Для WordPress-проектов удобнее держать постоянные редиректы в одном слое, а не размазывать их по теме и плагинам.

Например, если у вас есть старый URL и новый URL, лучше явно описать один переход, а не надеяться на цепочку из нескольких правил:

add_action('template_redirect', function () {
    if (is_admin()) {
        return;
    }

    $request_uri = isset($_SERVER['REQUEST_URI']) ? wp_unslash($_SERVER['REQUEST_URI']) : '';

    if ($request_uri === '/old-page/' || $request_uri === '/old-page') {
        wp_safe_redirect(home_url('/new-page/'), 301);
        exit;
    }
});

Такой код уместен только для точечных случаев. Если редиректов много, лучше вынести их в отдельный список и не захламлять functions.php.

Шаг 3. Уберите старое правило из лишнего слоя

Если редирект уже есть в .htaccess, а вы добавили его еще и в плагин, удалите дубликат из одного места. Если правило было в теме, перенесите его в mu-плагин или отдельный мини-плагин, чтобы оно не исчезло при смене темы.

Пример безопасного мини-плагина для точечных редиректов:

<?php
/**
 * Plugin Name: Site Redirects
 */

add_action('template_redirect', function () {
    $map = [
        '/old-page/' => '/new-page/',
        '/category/old-section/' => '/category/new-section/',
    ];

    $request_uri = isset($_SERVER['REQUEST_URI']) ? wp_unslash($_SERVER['REQUEST_URI']) : '';

    if (isset($map[$request_uri])) {
        wp_safe_redirect(home_url($map[$request_uri]), 301);
        exit;
    }
});

Такой подход проще контролировать, чем разрозненные правки по теме.

Шаг 4. Проверьте, не создает ли редирект цепочку

После удаления правила снова прогоните URL через curl -I -L. Нормальный результат — один переход или вообще отсутствие редиректа, если он больше не нужен. Если цепочка осталась, значит, часть логики сидит в другом месте.

Сравнение подходов: плагин, код, сервер

ПодходКогда подходитПлюсыМинусы
SEO-плагинМного редиректов, нужен интерфейсУдобно редактировать без кодаЛегко получить дубли и лишние правила
Мини-плагин или mu-pluginТочечные редиректы, нужен контроль в кодеНе зависит от темы, проще версионироватьНужна базовая дисциплина в разработке
.htaccess / nginxСерверные правила, массовые перенаправленияБыстро, без запуска WordPressСложнее сопровождать, выше риск ошибки

Проверка результата после внедрения

После чистки редиректов важно не ограничиваться открытием страницы в браузере. Проверьте три вещи:

  • URL отвечает сразу нужным кодом, без лишних переходов;
  • старый адрес больше не конфликтует с новым;
  • внутренние ссылки на сайте ведут сразу на конечный URL, а не на старый.

Если у вас есть доступ к краулеру, прогоните несколько старых URL и посмотрите, нет ли цепочек. Если краулера нет, достаточно нескольких ручных проверок через curl и DevTools.

Полезно также открыть отчет поисковой консоли, если сайт уже там подключен. Если старый URL продолжает всплывать, значит, он еще где-то используется — в sitemap, внутренних ссылках или внешних ссылках со старых страниц.

Частые ошибки и как их исправить

Удалили редирект, но страница снова уходит на старый адрес

Обычно это значит, что правило осталось в другом слое: в плагине, в .htaccess, в nginx или в кэше. Сначала очистите серверный и плагинный кэш, потом проверьте конфигурацию.

Получилась цепочка из двух и более редиректов

Частая причина — старый URL сначала ведет на промежуточный адрес, а тот уже на новый. Нужно оставить один финальный переход и убрать промежуточное правило.

Редирект сломал админку или вход

Так бывает, если правило написано слишком широко и задевает /wp-admin/, /wp-login.php или служебные пути. Ограничивайте условия по точному URI и проверяйте исключения.

Редирект работает только для части URL

Проверьте слеш в конце, регистр символов и параметры запроса. Для WordPress это особенно важно, потому что один и тот же адрес может существовать в нескольких вариантах.

Чек-лист перед удалением старого редиректа

  • Сохранена копия текущих правил.
  • Проверено, где именно задан редирект.
  • Убраны дубли в плагине, теме и серверной конфигурации.
  • Проверена цепочка через curl -I -L.
  • Очищен кэш страницы и кэш на сервере.
  • Проверены внутренние ссылки на новый URL.
  • Убедились, что админка и служебные страницы не затронуты.

Что делать, если редиректов много и они уже неуправляемы

Если сайт пережил несколько миграций, ручная чистка по одному правилу может занять слишком много времени. В таком случае сначала инвентаризируйте все перенаправления: выгрузите их из плагина, проверьте серверные правила и соберите список старых URL из логов и отчетов краулера. Только после этого удаляйте лишнее поэтапно.

Для сайтов, где редиректы и дубли метаданных уже накопились, иногда проще сначала навести порядок в технической базе, а потом оптимизировать отдельные правила. В таких сценариях полезно использовать инструменты для чистки дублей и технического мусора, например Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpmobile.ru&utm_medium=article&utm_campaign=kak-nayti-i-ubrat-starye-redirecty-v-wordpress

Главное правило простое: не удаляйте редирект, пока не понимаете, кто его создает и нужен ли он для индексации. В WordPress это почти всегда вопрос не одной настройки, а нескольких слоев сразу.

Создание мобильного видеоплеера в WordPress с поддержкой Adaptive Bitrate
15.02.2026
Оптимизация шрифтов в WordPress для мобильных устройств: практическое руководство
15.01.2026
Как исправить ошибку, когда поля оформления заказа WooCommerce не сохраняются на мобильных устройствах
11.08.2026
Как сделать прогноз погоды на WordPress для мобильного сайта
01.03.2026
Как удалить тормозящие AJAX-запросы в WooCommerce на мобильных устройствах
23.07.2026