На WordPress часто нужно закрыть от индексации не весь сайт, а только отдельные типы страниц: результаты поиска, архивы тегов, служебные разделы, страницы пагинации, тестовые записи, внутренние документы. Ошибка здесь обычно одна и та же: в robots.txt запрещают обход, но URL всё равно остаются в индексе; или, наоборот, ставят noindex на важные страницы и потом удивляются падению трафика.
Ниже — рабочий сценарий: как определить, что именно закрывать, чем отличается noindex от disallow, как сделать это через код и через плагин, и как проверить результат без гадания по логам.
Когда нужно закрывать страницу от индексации
Сначала полезно разделить страницы на две группы. Первая — реально бесполезные для поиска: внутренний поиск сайта, страницы авторизации, корзина, личный кабинет, технические фильтры, тестовые черновики. Вторая — спорные: архивы тегов, архивы дат, пагинация, страницы с дублирующимся контентом. Их закрывают не всегда, а только после проверки, есть ли у них самостоятельный поисковый спрос и ссылки.
Что закрывать почти всегда
- страницы внутреннего поиска вида
?s=; - страницы входа и регистрации;
- админские и служебные URL, если они доступны публично;
- тестовые записи, черновики, скрытые от пользователей разделы;
- дубли с параметрами, если они не нужны в поиске.
Что закрывать осторожно
- архивы категорий и тегов;
- страницы пагинации;
- авторские архивы;
- страницы с сортировкой и фильтрами.
Если архивы уже собирают трафик, закрывать их только ради «чистоты» индекса не стоит. В таких случаях лучше сначала убрать дубли заголовков, canonical и лишние страницы, а не рубить всё подряд.
Диагностика: что именно сейчас попадает в индекс
Перед правками проверьте, какие URL уже индексируются и почему. Для этого не нужен сложный аудит — достаточно нескольких точек проверки.
- Откройте Google Search Console и посмотрите отчёт по индексированию страниц.
- Проверьте конкретный URL через инструмент проверки страницы.
- Посмотрите исходный код страницы: есть ли
<meta name="robots" content="noindex,follow">или другой robots meta. - Проверьте заголовок ответа сервера: иногда стоит
X-Robots-Tag, а в HTML этого не видно.
Если страница закрыта в robots.txt, но уже есть в индексе, это не значит, что она исчезнет сразу. Поисковик может продолжать хранить её как URL без контента. Для удаления из индекса обычно нужен именно noindex или снятие доступа в сочетании с последующей переобходкой.
Что выбрать: robots.txt, noindex или X-Robots-Tag
Эти механизмы решают разные задачи. Ошибка многих сайтов в том, что они используют только один инструмент на все случаи.
| Способ | Что делает | Когда использовать | Ограничение |
|---|---|---|---|
robots.txt | Запрещает обход | Для экономии краулингового бюджета на служебных URL | Не гарантирует удаление из индекса |
noindex | Просит не индексировать страницу | Для страниц, которые уже доступны и должны исчезнуть из поиска | Страница должна быть доступна для обхода |
X-Robots-Tag | То же, что meta robots, но на уровне ответа сервера | Для PDF, медиафайлов, нестандартных ответов, шаблонных исключений | Нужно настраивать сервер или PHP |
Практически это выглядит так: если нужно убрать страницу из поиска, используйте noindex. Если нужно просто не тратить обход на внутренние служебные URL, можно добавить запрет в robots.txt. Если нужен контроль на уровне ответа сервера, удобнее X-Robots-Tag.
Пошаговое решение через код
Если задача точечная и вы не хотите ставить отдельный SEO-плагин, можно управлять индексацией через WordPress-хуки. Это особенно удобно для внутренних поисковых страниц, отдельных шаблонов и пользовательских типов записей.
Закрыть внутренний поиск WordPress от индексации
Поисковые результаты сайта почти всегда создают мусор в индексе. Их лучше закрыть от индексации, но оставить доступными для пользователей.
add_filter('wp_robots', function ($robots) {
if (is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот код добавляет noindex,follow только на страницы поиска. Ссылки на странице при этом остаются доступными для обхода, что обычно безопаснее, чем полный запрет.
Добавить X-Robots-Tag для служебных URL
Если нужно закрыть от индексации не HTML-страницу, а, например, файл или нестандартный ответ, можно отправить заголовок X-Robots-Tag.
add_action('template_redirect', function () {
if (is_page('thank-you') || is_page('search-results')) {
header('X-Robots-Tag: noindex, follow', true);
}
});Важно: заголовок должен отправляться до вывода контента. Если тема или плагин уже начал вывод, заголовок не сработает. Поэтому проверяйте это на чистом шаблоне и без лишнего вывода в functions.php.
Закрыть архивы тегов и дат
Если у вас много пустых или почти пустых архивов, их можно закрыть через фильтр robots для конкретных типов архивов.
add_filter('wp_robots', function ($robots) {
if (is_tag() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Но перед этим проверьте, не используются ли эти архивы как точки входа из поиска. Для некоторых сайтов архивы тегов дают стабильный трафик, и тогда закрытие принесёт больше вреда, чем пользы.
Как сделать это через плагин
Если вам нужен не код, а управляемая настройка для редакторов и SEO-специалистов, проще использовать плагин с нормальным управлением meta robots. Важно только не дублировать правила: если плагин ставит noindex, а тема или кастомный код — другое значение, итог может быть непредсказуемым.
В проектах, где одновременно нужно чистить дубли, управлять архивами и закрывать служебные страницы, иногда удобнее использовать Clearfy Pro: он закрывает типовые SEO-дыры, убирает лишние архивы и помогает не держать десяток мелких костылей в теме. Но даже в этом случае правила стоит проверить вручную в исходном коде и в заголовках ответа.
Проверка результата после внедрения
После настройки не ограничивайтесь визуальной проверкой в браузере. Нужны минимум три проверки.
- Откройте страницу и посмотрите исходный код: должен быть
noindexили соответствующийX-Robots-Tag. - Проверьте ответ сервера через
curl -Iили DevTools Network. - Отправьте URL на повторную проверку в Search Console и дождитесь переобхода.
Пример проверки заголовков:
curl -I https://example.com/search-results/В ответе ищите строку вида:
X-Robots-Tag: noindex, followЕсли вы используете meta robots, проверьте именно HTML-исходник, а не отрисованную страницу. Иногда кэш или JS-скрипты маскируют реальное состояние, и в браузере кажется, что всё нормально, хотя в коде тега нет.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждёте удаления из индекса
Это самая частая ошибка. Disallow не равен noindex. Если поисковик не может обойти страницу, он может не увидеть запрет на индексацию и оставить URL в выдаче без сниппета или с устаревшим описанием. Решение: сначала разрешить обход, поставить noindex, дождаться удаления, потом при необходимости ограничить обход.
Поставили noindex на важные страницы
Такое часто случается после массовой настройки через плагин: закрывают категории, пагинацию и заодно главную, страницы услуг или статьи. Проверяйте шаблоны и условия: is_home(), is_singular(), is_page() должны быть прописаны аккуратно.
Дублируете правила в плагине и в теме
Если SEO-плагин уже управляет robots meta, а в functions.php добавлен ещё один фильтр, итоговый код может стать конфликтным. В результате поисковик видит не то, что вы ожидали. Лучше оставить один источник правды: либо плагин, либо кастомный код.
Закрываете URL, которые должны передавать вес
Иногда страницы закрывают полностью, хотя на них есть полезные внутренние ссылки. Если страница не должна индексироваться, но должна помогать обходу, используйте noindex,follow, а не жёсткую блокировку.
Чек-лист перед публикацией изменений
- Определены конкретные URL, а не весь сайт целиком.
- Проверено, есть ли у страниц поисковый трафик.
- Выбран правильный механизм:
noindex,robots.txtилиX-Robots-Tag. - Нет конфликта между плагином и кодом темы.
- Проверен исходный код страницы и заголовки ответа.
- URL отправлен на повторную проверку в Search Console.
- После правки кэш очищен на уровне сайта и CDN.
Что делать с кэшем и производительностью
Если сайт использует page cache, CDN или серверный кэш, новые robots meta и заголовки могут не появиться сразу. После внедрения очистите кэш страницы, объектный кэш, если он есть, и CDN. Иначе вы проверите старую версию и решите, что код не работает.
Для массовых правок лучше не плодить тяжёлую логику в template_redirect. Если условие можно определить раньше и проще, используйте фильтр wp_robots — это чище и обычно безопаснее для производительности.
Если задача выходит за рамки одной-двух страниц и касается целого набора дублей, архивов и технических URL, сначала составьте список шаблонов, а потом уже вносите изменения. На WordPress хаотичное закрытие страниц почти всегда приводит к SEO-ошибкам, которые потом приходится разбирать вручную.