Как запретить индексацию отдельных разделов сайта через robots.txt и meta robots

На WordPress часто пытаются решить одну и ту же задачу разными способами: закрыть от поиска служебные страницы, архивы тегов, результаты поиска по сайту, страницы авторов или технические разделы. Ошибка обычно в том, что robots.txt используют как универсальный выключатель, хотя он не убирает уже проиндексированные URL из поиска и не всегда помогает с дублями. Для части задач нужен meta robots, для части — настройка самого плагина или темы, а для части — вообще удаление источника дублей.

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

Когда проблема действительно в индексации, а не в контенте

Сначала стоит убедиться, что у вас именно техническая проблема. Если страница ранжируется плохо из-за слабого текста, закрытие от индексации только ухудшит ситуацию. А вот если в выдаче всплывают служебные URL, дубли или мусорные архивы, тогда настройка robots и meta robots оправдана.

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

  • в поиске есть страницы вида /page/2/, ?s=, /author/, /tag/, которые не должны привлекать трафик;
  • в индексе появляются версии одной и той же страницы с параметрами;
  • поисковик показывает страницы пагинации вместо основной категории;
  • в отчётах Search Console растёт число «Просканировано, но не проиндексировано» для технических URL;
  • в sitemap попадают разделы, которые вы не хотите продвигать.

Что проверить до правок

  • есть ли у проблемного URL реальный контент и входящий трафик;
  • не закрыт ли он уже через noindex или X-Robots-Tag;
  • не генерирует ли его плагин SEO, кэш или тема;
  • не дублируется ли страница через канонический URL.

Что лучше: robots.txt, meta robots или каноникал

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

ПодходКогда использоватьОграничение
robots.txtЧтобы ограничить обход служебных разделов и файловНе удаляет уже проиндексированные URL
meta robots noindexЧтобы убрать страницу из индексаСтраница должна быть доступна для обхода
rel=canonicalЧтобы указать основную версию при дубляхНе подходит для полного скрытия раздела

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

Пошаговое решение: закрываем служебные разделы без лишнего риска

Шаг 1. Настройте robots.txt только для обхода

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

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /author/
Disallow: /tag/
Disallow: /feed/

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

Шаг 2. Добавьте noindex для архивов, которые не нужны в выдаче

Если вы используете SEO-плагин, проще всего отключить индексацию в его настройках. Но если нужен точечный контроль без лишних интерфейсов, можно добавить meta robots через хук wp_robots. Это штатный способ WordPress, он не требует выдуманных API и работает на уровне генерации robots-мета.

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

    return $robots;
} );

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

Шаг 3. Уберите дубли на уровне источника

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

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

Пример точечной настройки для служебных страниц

Иногда нужно закрыть только отдельные типы страниц, а не весь архив. Например, результаты поиска и страницы автора, но оставить теги и категории. Тогда удобнее сделать это через фильтр wp_robots и не трогать robots.txt без необходимости.

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

    if ( is_author() ) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
} );

Здесь есть важная деталь: для поиска логично ставить nofollow, если вы не хотите, чтобы поисковик тратил обход на внутренние поисковые результаты. Для авторских архивов чаще оставляют follow, чтобы робот мог пройти по ссылкам дальше, но сам архив не индексировал.

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

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

  • Откройте страницу в браузере и проверьте исходный код: должен быть виден <meta name="robots" content="noindex, follow"> или эквивалентный набор директив.
  • Проверьте robots.txt по адресу /robots.txt и убедитесь, что там нет случайного запрета на важные разделы и ресурсы.
  • В Google Search Console используйте проверку URL: статус должен показывать, что страница обнаружена, а директива noindex распознана.
  • Если URL уже был в индексе, дождитесь переобхода и проверьте, исчезает ли он из выдачи по точному запросу.

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

curl -I https://example.com/author/admin/
curl -s https://example.com/author/admin/ | grep -i robots

Если страница отдает 200 OK, но в HTML нет noindex, значит фильтр не сработал или подключён не в том месте. Если в ответе есть noindex, но URL всё равно индексируется, проблема обычно в том, что робот ещё не переобошёл страницу или закрытие сделано только через robots.txt.

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

Закрыли URL в robots.txt и ждёте удаления из индекса

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

Случайно закрыли важные ресурсы

Если в robots.txt попали CSS, JS или изображения, поисковик может некорректно отрендерить страницу. Это особенно заметно на темах с динамической версткой. Проверяйте, что вы не блокируете папки, которые нужны фронтенду.

Использовали noindex на странице, которая должна ранжироваться

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

Дубли остались, потому что canonical не совпадает с реальным URL

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

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

Не храните критичную логику закрытия индексации в нескольких местах одновременно. Если и тема, и SEO-плагин, и кастомный код пытаются управлять robots, вы получите конфликт. Лучше выбрать один источник правды: либо плагин, либо код в дочерней теме, либо MU-плагин.

Если правите robots.txt вручную, делайте это через серверный файл или штатный интерфейс плагина, а не через случайные сниппеты в шаблоне. Это проще контролировать и легче откатить. Для кастомного PHP-кода используйте дочернюю тему или отдельный мини-плагин, чтобы обновление темы не стерло настройки.

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

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

Короткий чек-лист перед публикацией правок

  • Поняли, какой тип URL закрываете: обход, индексацию или дубль.
  • Проверили, что важные страницы не попали под общий запрет.
  • Убедились, что noindex доступен для обхода.
  • Сверили canonical на основных страницах.
  • Проверили исходный код и Search Console после внедрения.
  • Не закрыли CSS, JS и изображения, нужные для рендеринга.

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

⭐⭐⭐⭐⭐