Как закрыть от индексации старые версии страниц в WordPress без плагина

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

Ниже разберём рабочий сценарий: как определить проблемные URL, как закрыть их от индексации, чем отличается noindex от robots.txt, и как проверить, что поисковик получил нужные сигналы.

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

Сначала стоит убедиться, что речь не о случайной технической ошибке, а именно о дублях или устаревших адресах. Типичный набор симптомов:

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

Что именно нужно закрывать

Не все старые URL одинаковы. Иногда правильнее сделать 301-редирект, а иногда — оставить страницу доступной, но запретить индексацию. Например:

  • 301 редирект — если у старой страницы есть очевидная новая замена;
  • noindex — если страница нужна пользователям, но не должна участвовать в поиске;
  • 410 Gone — если URL удалён окончательно и возвращать его не планируется.

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

Диагностика: как найти старые URL и дубли

Перед правкой кода проверьте, какие адреса реально существуют и как они отдаются сервером. Минимальный набор проверок:

  1. Откройте проблемный URL в браузере и посмотрите, не отдаёт ли он 200 OK вместо редиректа.
  2. Проверьте заголовки ответа через DevTools или curl -I.
  3. Посмотрите исходный HTML: есть ли уже noindex в мета-тегах или в robots-правилах.
  4. Сравните канонический адрес страницы и фактический URL.

Пример проверки через консоль:

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

Если в ответе 200 OK, а страница уже не должна индексироваться, значит нужно добавить явный сигнал для поисковика. Если стоит 301, но старая версия всё равно появляется в индексе, проверьте, не осталось ли на неё внутренних ссылок и нет ли цепочки редиректов.

Пошаговое решение без плагина

Самый аккуратный вариант — закрывать от индексации только нужные шаблоны или конкретные URL по условию. Для этого можно использовать фильтр wp_robots, который WordPress применяет к robots-мета в HTML.

1. Добавьте noindex для старых страниц по списку URL

Если у вас есть несколько известных старых адресов, проще всего задать их явно. Код можно положить в functions.php дочерней темы или в небольшой mu-plugin.

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_admin()) {
        return $robots;
    }

    $old_paths = array(
        '/staryj-url/',
        '/old-about-page/',
        '/archive-2022/',
    );

    $request_uri = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH);

    if ($request_uri && in_array($request_uri, $old_paths, true)) {
        $robots['noindex'] = true;
        $robots['nofollow'] = true;
    }

    return $robots;
});

Этот вариант хорош тем, что не затрагивает весь сайт. Но он подходит только тогда, когда список старых URL небольшой и известен заранее.

2. Закройте от индексации архивы или служебные страницы по условию

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

<?php
add_filter('wp_robots', function (array $robots) {
    if (is_search() || is_attachment()) {
        $robots['noindex'] = true;
        $robots['nofollow'] = true;
    }

    return $robots;
});

Важно: не ставьте noindex на всё подряд. Если закрыть от индексации важные посадочные страницы, они перестанут участвовать в поиске, и это уже будет не техническая чистка, а потеря трафика.

3. Если нужен именно HTTP-заголовок X-Robots-Tag

Для PDF, изображений или нестандартных ответов удобнее использовать заголовок X-Robots-Tag. WordPress сам его не добавляет для обычных страниц, но вы можете сделать это через send_headers или на уровне сервера. В PHP это выглядит так:

<?php
add_action('send_headers', function () {
    $request_uri = parse_url($_SERVER['REQUEST_URI'] ?? '', PHP_URL_PATH);

    if ($request_uri === '/archive-2022/') {
        header('X-Robots-Tag: noindex, nofollow', true);
    }
});

Такой способ полезен, если HTML-мета-тег не подходит или страница генерируется не стандартным шаблоном.

Сравнение подходов: robots.txt, noindex и редирект

СпособКогда использоватьПлюсМинус
301Есть новая версия страницыПередаёт пользователей и часть сигналов на новый URLНужна точная замена
noindexСтраница должна открываться, но не индексироватьсяГибко и безопасно для контентаНужно дождаться переобхода
robots.txtНужно ограничить обход, а не индексирование как таковоеПросто реализоватьНе всегда убирает URL из индекса

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

Как проверить, что решение сработало

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

  • Откройте страницу и проверьте исходный код: есть ли <meta name="robots" content="noindex,nofollow"> или аналогичный набор значений.
  • Проверьте заголовки ответа через curl -I, если используете X-Robots-Tag.
  • Убедитесь, что старый URL не ведёт на 200 OK, если должен быть редирект.
  • Проверьте внутренние ссылки: старый адрес не должен встречаться в меню, хлебных крошках и контенте.
  • В Search Console отправьте URL на повторную проверку после изменения.

Пример, как проверить мета-robots в HTML:

curl -s https://example.com/staryj-url/ | grep -i robots

Если страница отдает noindex, но в индексе всё ещё висит старая версия, это нормально на переходном этапе. Поисковику нужно время, чтобы переобойти URL и обновить состояние.

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

Ставят noindex и одновременно закрывают URL в robots.txt

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

Используют редирект на нерелевантную страницу

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

Забывают про канонический URL

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

Закрывают от индексации не тот шаблон

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

Практические советы по безопасности и производительности

Если вы вносите такие правки через тему, лучше не редактировать родительскую тему напрямую. Используйте дочернюю тему или небольшой mu-plugin, чтобы обновление не затёрло изменения. Для точечных технических правил это особенно важно: код должен переживать обновления дизайна и не зависеть от визуальных шаблонов.

Ещё один полезный момент — не плодить десятки условий в functions.php. Если старых URL много, вынесите список в отдельный массив или конфигурационный файл. Так проще поддерживать правила и быстрее находить лишние записи после редизайна.

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

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

Как отключить открытые XML-фиды и служебные архивы в WordPress без лишних дублей
01.10.2026
Как закрыть от индексации старые версии страниц в WordPress без плагина
10.09.2026
Исправляем ошибку возврата товаров в WooCommerce без понятия возврата
19.09.2026
Как закрыть от индексации служебные страницы WordPress: поиск, 404, корзина и личный кабинет
04.10.2026