Как запретить индексацию старых версий страниц WordPress через 301 и noindex

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

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

Когда проблема действительно в старых версиях страниц

Симптомы обычно похожи:

  • в поиске есть и новая страница, и старая версия с другим URL;
  • в Google Search Console растут дубли по каноническим URL или по параметрам;
  • в sitemap попадают адреса, которые уже не используются;
  • страницы вложений, архивы автора или теги конкурируют с основными материалами;
  • после смены темы или плагина SEO старые URL продолжают отдавать 200 OK.

Что проверить в первую очередь

Откройте проблемный URL и посмотрите три вещи: код ответа сервера, rel=canonical и мета-тег robots. Если страница отдает 200 OK, но должна быть заменена новой версией, это кандидат на 301 редирект. Если страница нужна пользователю, но не должна индексироваться, тогда уместен noindex. Если URL вообще не должен существовать, лучше вернуть 410 или 404, а не маскировать проблему.

Как выбрать между 301, noindex и удалением страницы

Не все старые URL нужно обрабатывать одинаково. Для SEO это разные сценарии, и путать их вредно.

СценарийЧто делатьКогда подходитКомпромисс
Старая версия страницы имеет замену301 redirectСменили slug, структуру, домен, языкЧасть сигналов передается новой странице не мгновенно
Страница нужна на сайте, но не в поискеnoindex, followАрхивы, внутренние страницы, служебные подборкиURL остается доступным по прямой ссылке
Страница больше не нужна404 или 410Удаленный контент без заменыНужно убрать внутренние ссылки на этот адрес

Если цель — убрать именно старую версию материала, а новая уже есть, почти всегда лучше 301. noindex не решает задачу переноса веса и не убирает дубли из обхода так надежно, как редирект.

Пошаговое решение: как закрыть старые URL без потери нужных страниц

1. Составьте список адресов, которые надо обработать

Начните с реальных URL из Search Console, логов сервера, sitemap и внутренних ссылок. Не полагайтесь только на визуальный осмотр сайта. Часто старые адреса живут в архиве, в хлебных крошках, в карточках похожих материалов или в результатах поиска по сайту.

Полезно собрать список в таблицу:

  • старый URL;
  • новый URL или статус удаления;
  • тип обработки: 301, noindex, 404/410;
  • источник обнаружения;
  • дата изменения.

2. Настройте 301 для переехавших страниц

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

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

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

    $map = [
        '/staryj-slug/' => '/novyj-slug/',
        '/category/news/page/2/' => '/novosti/',
    ];

    foreach ($map as $old => $new) {
        if (trailingslashit(parse_url($request_uri, PHP_URL_PATH)) === trailingslashit($old)) {
            wp_redirect(home_url($new), 301);
            exit;
        }
    }
});

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

3. Добавьте noindex для страниц, которые должны открываться, но не индексироваться

Например, это может быть архив автора на небольшом сайте, страница поиска, служебные фильтры или дубли, которые нужны для навигации. В WordPress можно отдать мета-тег robots через wp_head.

<?php
add_action('wp_head', function () {
    if (is_search() || is_author() || is_attachment()) {
        echo '<meta name="robots" content="noindex,follow">' . "\n";
    }
}, 1);

Если у вас уже стоит SEO-плагин, проверьте, не генерирует ли он свой robots meta. Два разных тега на одной странице — частая причина путаницы.

4. Уберите старые URL из sitemap

Если страница закрыта от индексации, она не должна оставаться в XML-карте сайта. Иначе вы сами подсказываете поисковику адрес, который хотите скрыть. После смены slug или удаления материала пересоберите sitemap и проверьте, что там нет старых версий.

Если sitemap формирует SEO-плагин, править нужно его настройку или фильтры, а не только шаблон темы. Если карта генерируется кодом, исключайте записи по статусу, типу или мета-полям.

5. Уберите внутренние ссылки на старые адреса

Редирект спасает, но не заменяет чистку внутренних ссылок. Проверьте меню, блоки, связанные материалы, хлебные крошки, виджеты и старые вставки в контенте. Чем меньше ссылок ведет на старый URL, тем быстрее поисковик перестроится на новую структуру.

Диагностика: как понять, что решение сработало

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

  • старый URL отдает 301 на нужный новый адрес;
  • новый URL отвечает 200 OK;
  • на новой странице указан корректный canonical;
  • страница с noindex не попадает в sitemap;
  • внутренние ссылки больше не ведут на старый адрес;
  • в Search Console старый URL постепенно уходит из отчета по страницам.

Быстрая проверка через curl выглядит так:

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

В ответе вы должны увидеть 301 Moved Permanently и заголовок Location с новым адресом. Для страницы с noindex проверьте HTML-источник или заголовки, если вы отдаете robots через сервер.

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

Редирект на главную вместо новой страницы

Так делают, когда нет времени составить карту соответствий. В итоге поисковик теряет контекст, а пользователь попадает не туда, куда ожидал. Исправление простое: для каждого старого URL должен быть свой целевой адрес или честный 404/410.

noindex без удаления из sitemap

Это типичная полумера. Страница открыта, но вы одновременно просите поисковик ее не индексировать и продолжаете показывать ее в карте сайта. Уберите ее из sitemap и проверьте, что SEO-плагин не возвращает ее обратно после обновления.

Слишком широкое правило в .htaccess или nginx

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

Оставили старые ссылки в блоках и шаблонах

Даже при правильном редиректе это лишняя нагрузка и лишний шум в логах. После миграции пройдитесь по шаблонам темы, блокам Gutenberg, меню и виджетам. Иногда старый URL сидит в пользовательском HTML-блоке или в настройках темы.

Безопасность и производительность: что учесть при массовой чистке URL

Если редиректов много, не вешайте всю логику на template_redirect в теме. Для больших списков лучше использовать серверный редирект или специализированный плагин, чтобы не гонять PHP на каждом запросе. Код в теме подходит для небольших точечных сценариев и тестов.

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

Для сайтов, где много технического мусора в индексе, полезно смотреть в сторону комплексной чистки SEO-обвязки и дублей. Например, в Clearfy Pro есть инструменты, которые помогают убрать часть лишних страниц и системных дублей без ручной правки каждого шаблона, но даже с плагином логику редиректов и noindex нужно проверять вручную.

Практический чек-лист перед публикацией изменений

  • составлен список старых URL и их новых замен;
  • для переехавших страниц настроен 301;
  • страницы без индексации получили noindex,follow;
  • старые адреса удалены из sitemap;
  • внутренние ссылки обновлены;
  • проверен HTTP-статус через curl или DevTools;
  • в Search Console отправлена проверка исправления.

Если после этого старые URL все еще появляются в индексе, не спешите менять стратегию. Иногда поисковику нужно время, чтобы переобойти страницы и увидеть новую схему. Но если в ответах сервера остались 200 OK на старых адресах, проблема не в индексации, а в том, что редирект или удаление не сработали.

Премиум шаблоны для WordPress Купить плагины для WordPress