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

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

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

Что именно нужно закрыть и почему одного robots.txt мало

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

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

robots.txt управляет обходом, но не гарантирует удаление из индекса. Если страница уже известна поисковой системе, чаще нужен noindex в HTML-ответе или в HTTP-заголовке. Для WordPress это удобно делать через wp_head и, при необходимости, через фильтр wp_robots.

Когда достаточно noindex

Обычно noindex ставят на:

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

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

Диагностика проблемы перед правкой

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

  1. Откройте проблемный URL в браузере и посмотрите исходный код страницы.
  2. Найдите тег <meta name="robots" ...>.
  3. Проверьте, нет ли уже canonical на другой адрес.
  4. Посмотрите, не генерируется ли страница через шаблон архива, а не через обычную запись.
  5. Если сайт под кешем, очистите кеш перед повторной проверкой.

Быстрая проверка через терминал помогает увидеть заголовки и HTML без влияния браузера:

curl -I https://example.com/search/test/

Если нужен именно HTML, а не только заголовки, используйте:

curl -s https://example.com/search/test/ | grep -i robots

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

Пошаговое решение через functions.php или мини-плагин

Самый безопасный вариант — вынести код в небольшой mu-plugin или отдельный плагин. Если правите functions.php, помните, что при смене темы настройка исчезнет.

Ниже пример, который добавляет noindex, nofollow для поиска по сайту, архивов автора и нескольких конкретных страниц по ID. Логику можно расширить под свои условия.

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

    $blocked_pages = array( 12, 34, 56 );

    if ( is_page( $blocked_pages ) ) {
        $robots['noindex']  = true;
        $robots['nofollow'] = true;
    }

    return $robots;
} );

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

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_page( 'testovaya-stranica' ) || is_page( 'vnutrennyaya-poiskovaya-stranica' ) ) {
        $robots['noindex']  = true;
        $robots['nofollow'] = true;
    }

    return $robots;
} );

Когда нужно закрыть от индексации не только HTML, но и сам обход, добавьте правила в robots.txt. Для WordPress это можно сделать через фильтр robots_txt:

<?php
add_filter( 'robots_txt', function( $output, $public ) {
    $output .= "\nDisallow: /search/\n";
    $output .= "Disallow: /tag/";
    return $output;
}, 10, 2 );

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

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

ПодходКогда уместенПлюсыМинусы
Код в теме или mu-pluginНужно закрыть 2–10 точечных URL или шаблоновБез лишних зависимостей, полный контрольНужно аккуратно сопровождать при обновлениях
SEO-плагинМного типов архивов и страниц, нужна админкаУдобно для редакторов, меньше ручной логикиЛишний слой настроек, иногда конфликтует с темой
robots.txt толькоНужно ограничить обход, а не индексациюПросто и быстроНе решает задачу удаления уже известного URL из индекса

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

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

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

  1. Откройте страницу и убедитесь, что в исходном коде есть noindex.
  2. Проверьте, не переопределяет ли его кеш или другой плагин.
  3. Запросите URL через Search Console и посмотрите, как поисковик видит страницу после переобхода.

В исходнике должен появиться примерно такой фрагмент:

<meta name="robots" content="noindex, nofollow" />

Если вместо этого вы видите только index, follow или вообще ничего, значит фильтр не сработал, либо тема/плагин перезаписывает мета-теги позже по приоритету.

Что проверить, если тег не появился

  • Код вставлен не в тот файл или не активен mu-plugin.
  • Условие is_page() не совпадает с реальным ID или slug.
  • Кеш страницы не обновился.
  • Другой SEO-плагин уже формирует robots-мета и конфликтует с вашим кодом.
  • Страница выводится не через wp_head, а через кастомный шаблон без стандартного хука.

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

Закрыли страницу в robots.txt, но не поставили noindex

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

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

Такое бывает после копипаста готового сниппета в wp_head. В результате из поиска исчезают и полезные страницы. Всегда проверяйте условия: is_search(), is_page(), is_category(), is_author() и конкретные ID.

Не учитывают canonical

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

Путают архивы и записи

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

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

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

  • Не закрывайте важные страницы только через CSS-скрытие — поисковик это не считает решением.
  • Не используйте массовый noindex без списка URL и без ревизии sitemap.
  • После изменения правил обновите sitemap и проверьте, не попали ли туда закрытые страницы.
  • Если сайт большой, тестируйте правила сначала на одном типе страниц, а не на всём архиве сразу.

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

Если нужен более широкий набор инструментов для чистки дублей, архивов и служебных URL, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wplog.ru&utm_medium=article&utm_campaign=kak-zapretit-indeksaciyu-otdelnyh-stranic-wordpress-bez-plaginov

Как использовать хуки в WordPress для автоматизации задач
21.11.2025
Как добавить автоматическое отправление сообщений в контактной форме WordPress
07.04.2026
Диагностика и решение проблем с нерабочими AJAX-запросами в WordPress
30.04.2026
Как удалить категорию в WordPress с помощью кода
17.12.2025
Как установить ограничение на регистрацию в WordPress по домену email
21.06.2026