В WordPress часто нужно не «прятать сайт целиком», а точечно убрать из поиска отдельные страницы: служебные шаблоны, результаты внутреннего поиска, страницы благодарности, тестовые материалы, архивы с пустым или слабым содержимым. Ошибка здесь одна и та же: пытаются решить задачу только через robots.txt, хотя поисковик может всё равно знать URL и показывать его в индексе без сниппета. Для таких случаев нужен осознанный выбор между noindex, nofollow и закрытием обхода.
Когда проблема действительно в индексации, а не в дублях
Сначала стоит понять, что именно происходит. Если страница уже есть в индексе, но не должна там быть, это одна история. Если URL не индексируется, но продолжает тратить crawl budget и плодить обходы, это другая. И если у вас несколько похожих страниц с разными параметрами, то одной директивой noindex проблему не закрыть — нужно ещё убрать причину появления этих URL.
Типичные сценарии
- страницы внутреннего поиска вида
?s=; - страницы благодарности после формы или оплаты;
- служебные архивы автора, даты, тегов с пустым или слабым контентом;
- тестовые страницы, которые забыли удалить;
- страницы с параметрами сортировки, UTM или фильтрами, если они не должны попадать в поиск.
Если речь именно о фильтрах и дублях каталога, это уже отдельная задача. Здесь разбираем более общий и безопасный сценарий: как закрывать отдельные URL в WordPress без поломки обхода сайта.
Диагностика: что проверить до правок
Перед изменениями посмотрите, как страница сейчас отдаётся поисковику. Важны три вещи: код ответа, мета-robots и наличие в sitemap. Если страница уже отдается с noindex, но всё равно попадает в индекс, проблема может быть в том, что она закрыта в robots.txt раньше, чем поисковик увидел мета-тег.
Минимальный чек-лист
- откройте страницу в браузере и посмотрите исходный код;
- найдите
<meta name="robots"или HTTP-заголовокX-Robots-Tag; - проверьте, есть ли URL в XML-карте сайта;
- посмотрите, не блокирует ли
robots.txtобход этой страницы раньше, чем поисковик увидитnoindex; - если URL уже в индексе, проверьте, не ведут ли на него внутренние ссылки.
Для быстрой проверки можно использовать curl. Это полезно, если вы правите заголовки на уровне сервера или через код темы/плагина:
curl -I https://example.com/sample-page/
В ответе ищите X-Robots-Tag, если он используется. Если заголовка нет, а в HTML есть мета-robots, это тоже нормально — просто проверяйте именно тот способ, который вы внедрили.
Что выбрать: noindex, nofollow или robots.txt
Эти инструменты решают разные задачи, и смешивать их без понимания смысла не стоит. noindex говорит поисковику не показывать страницу в выдаче. nofollow не передаёт сигнал по ссылкам с этой страницы. robots.txt ограничивает обход, но не гарантирует удаление URL из индекса.
| Подход | Когда использовать | Минус |
|---|---|---|
noindex |
Страница доступна, но не должна быть в поиске | Нужно, чтобы поисковик мог её обойти и увидеть директиву |
nofollow |
Не хотите передавать сигналы по ссылкам с этой страницы | Не решает задачу индексации сам по себе |
robots.txt |
Нужно ограничить обход технических разделов | URL может остаться в индексе без контента |
Пошаговое решение через код
Если задача точечная и вы не хотите ставить отдельный SEO-плагин, можно добавить правила в тему или небольшой mu-plugin. Для отдельных страниц удобнее всего использовать фильтр wp_robots, который позволяет добавить директивы в мета-robots без правки шаблонов.
1. Закрыть конкретную страницу от индексации
Ниже пример для страницы с определённым slug. Он добавит noindex и nofollow только на нужном URL:
add_filter( 'wp_robots', function( array $robots ) {
if ( is_page( 'thank-you' ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );
Если у вас не slug, а ID страницы, используйте is_page( 123 ). Это надёжнее, когда slug могут менять редакторы.
2. Закрыть внутренний поиск WordPress
Страницы поиска почти всегда не нужны в индексе. Для них лучше поставить noindex, follow, чтобы поисковик не показывал саму страницу поиска, но мог проходить по ссылкам на найденные материалы:
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
unset( $robots['nofollow'] );
}
return $robots;
} );
Здесь важно не ставить nofollow без необходимости. Для страниц поиска это часто лишнее ограничение: поисковику полезно видеть ссылки на реальные материалы, а не только саму форму поиска.
3. Добавить X-Robots-Tag для файлов или нестандартных URL
Если нужно закрыть не HTML-страницу, а, например, отдельный endpoint или файл, удобнее отправить HTTP-заголовок. В WordPress это можно сделать через send_headers:
add_action( 'send_headers', function() {
if ( isset( $_GET['download'] ) ) {
header( 'X-Robots-Tag: noindex, nofollow', true );
}
} );
Такой вариант полезен для технических страниц, которые не рендерятся как обычный шаблон. Но применять его нужно аккуратно: не вешайте заголовок на слишком широкое условие, иначе случайно закроете лишние URL.
Когда robots.txt уместен, а когда нет
robots.txt нужен для ограничения обхода, а не для «удаления из поиска». Если вы закроете страницу там, но она уже известна поисковику, она может остаться в выдаче как URL без описания. Это частая ошибка, когда пытаются спрятать страницы благодарности или внутренний поиск.
Пример допустимого правила:
User-agent: *
Disallow: /wp-admin/
Disallow: /?s=
Disallow: /search/
Но если вам нужно именно убрать страницу из индекса, сначала ставьте noindex, а уже потом при необходимости ограничивайте обход. Иначе поисковик может не увидеть директиву на самой странице.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой в браузере. Нужна проверка именно того, что увидит поисковый робот.
- откройте исходный код страницы и убедитесь, что появился
<meta name="robots" content="noindex, nofollow">или нужная комбинация; - проверьте HTTP-заголовки через
curl -I, если использовалиX-Robots-Tag; - посмотрите, не осталась ли страница в XML-карте сайта;
- убедитесь, что на URL не ведут лишние внутренние ссылки из меню, хлебных крошек или виджетов;
- если страница уже была в индексе, отправьте её на переобход в Search Console и отслеживайте статус.
Если через несколько обходов URL всё ещё в индексе, проверьте, не конфликтуют ли правила: например, страница закрыта в robots.txt, но не имеет noindex. В таком случае поисковик может не добраться до директивы на самой странице.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt и ждёте удаления из индекса
Это самая распространённая ошибка. robots.txt не удаляет URL из поиска сам по себе. Исправление простое: сначала вернуть доступ для обхода, добавить noindex, дождаться переобхода, а уже потом при необходимости снова ограничивать лишние пути.
Поставили noindex на шаблон, а не на конкретный URL
Если условие слишком широкое, можно случайно закрыть весь тип записей или все страницы архива. Проверяйте логику is_page(), is_search(), is_singular() и не используйте общие условия без теста на нескольких URL.
Оставили страницу в sitemap
Если URL продолжает попадать в карту сайта, поисковик будет регулярно его обходить. Для закрытых страниц их нужно убрать из sitemap на уровне SEO-плагина или генератора карты, а не только прятать через robots-мета.
Поставили nofollow там, где он не нужен
nofollow на служебных страницах иногда мешает обходу полезных ссылок. Для внутренних поисков и некоторых архивов обычно достаточно noindex, follow. Не добавляйте nofollow по привычке.
Практические советы по безопасности и производительности
Если вы закрываете много служебных страниц, не размазывайте логику по шаблонам темы. Лучше вынести её в отдельный мини-плагин или mu-plugin, чтобы правило не потерялось после обновления темы. Это особенно важно, если сайт поддерживает несколько разработчиков.
Ещё один полезный момент: не полагайтесь только на визуальный контроль. После внедрения проверьте исходный код, заголовки и карту сайта. Это быстрее, чем потом разбираться, почему страница всё ещё в индексе.
Если нужен более широкий набор инструментов для технической чистки WordPress — удаления дублей, настройки мета-robots, управления служебными страницами и базовой SEO-гигиены — можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином принцип остаётся тем же: сначала диагностика, потом точечное правило, потом проверка результата.