Сценарий типичный: в индексе появляются служебные страницы, результаты внутреннего поиска, фильтры, архивы с тонким контентом или тестовые материалы. Удалять их физически не всегда можно, а закрывать весь сайт через robots.txt — слишком грубо. В таких случаях нужен точечный noindex на уровне конкретных URL или типов страниц.
Ниже — рабочая схема для WordPress: сначала быстро диагностируем, что именно попало в поиск, затем выбираем способ исключения, проверяем результат и разбираем ошибки, из-за которых страницы продолжают индексироваться.
Когда нужен noindex, а не robots.txt
robots.txt управляет обходом, но не гарантирует удаление уже проиндексированного URL. Если страница уже в индексе, поисковик может продолжать показывать её без захода на сам документ. Для таких случаев нужен именно noindex в HTML-ответе или через SEO-плагин.
Используйте noindex, если нужно скрыть:
- страницы внутреннего поиска;
- архивы с пустым или слабым содержимым;
- служебные страницы, которые не должны ранжироваться;
- дубли с параметрами, если они всё же доступны по отдельным URL;
- тестовые или временные материалы, которые нельзя удалять сразу.
Если URL вообще не должен открываться пользователю, тогда уже смотрят в сторону 404, 410 или ограничения доступа. Но для обычной SEO-санитарии noindex — более аккуратный инструмент.
Диагностика: что именно нужно закрыть
Перед правкой кода проверьте, какие страницы реально создают проблему. Часто закрывают не то, что нужно, и потом удивляются падению трафика.
Что проверить в первую очередь
- какие URL уже есть в индексе через
site:и отчёты Search Console; - есть ли у страниц уникальный контент или это почти пустые архивы;
- не используются ли эти URL во внутренней перелинковке;
- не нужны ли они для пользователей, хотя и не нужны для поиска;
- не закрывает ли текущий SEO-плагин уже эти страницы автоматически.
Если страница важна для навигации, но не должна ранжироваться, noindex, follow обычно подходит лучше всего. Если страница техническая и не должна ни индексироваться, ни передавать вес, иногда добавляют ещё и nofollow, но это уже отдельная задача и не универсальное правило.
Способы исключить страницы из поиска
Есть три нормальных пути: через SEO-плагин, через фильтр в теме или плагине, либо точечно через шаблон страницы. Выбор зависит от того, насколько массово нужно применять правило.
| Способ | Когда подходит | Компромисс |
|---|---|---|
| SEO-плагин | Нужно закрыть архивы, страницы, таксономии без кода | Зависит от интерфейса и логики плагина |
Код через wp_robots | Нужна точечная логика по условиям WordPress | Требует поддержки в теме или мини-плагине |
| Шаблон страницы | Нужно закрыть один конкретный шаблон | Легко забыть при смене темы |
Вариант 1. Через SEO-плагин
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Во многих случаях проще включить noindex для нужного типа архивов или отдельных страниц прямо в интерфейсе. Это безопаснее, чем дублировать логику кодом.
Плюс такого подхода в том, что плагин обычно сам ставит корректный meta robots и не требует ручной правки шаблонов. Минус — настройки могут отличаться от плагина к плагину, а при миграции сайта логика иногда теряется.
Вариант 2. Через фильтр wp_robots
Если нужна точная логика, используйте фильтр wp_robots. Это штатный способ изменить robots-мета в WordPress без правки ядра.
add_filter( 'wp_robots', function( $robots ) {
if ( is_search() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_page( array( 123, 456 ) ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );В этом примере закрываются страницы поиска, архивы авторов и две конкретные страницы по ID. Логику можно расширить под свои условия: шаблон страницы, таксономию, статус записи или наличие определённого мета-поля.
Если вы хотите закрывать не по ID, а по шаблону, это тоже делается штатно:
add_filter( 'wp_robots', function( $robots ) {
if ( is_page_template( 'templates/landing-test.php' ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Вариант 3. Через отдельный шаблон страницы
Если страница одна и она всегда должна быть закрыта, можно добавить meta robots прямо в шаблон. Это менее гибко, но иногда проще для лендингов, тестовых страниц и внутренних служебных материалов.
<?php
/* Template Name: Noindex Page */
get_header();
?>
<meta name="robots" content="noindex,follow">
<?php while ( have_posts() ) : the_post(); ?>
<main>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
</main>
<?php endwhile; get_footer();Но у этого варианта есть минус: если тема или шаблон поменяются, правило легко потерять. Для долгоживущих сайтов лучше фильтр wp_robots или SEO-плагин.
Пошаговая настройка для точечного noindex
Если нужен управляемый и повторяемый вариант, делайте это через мини-плагин или functions.php дочерней темы. Так правило не исчезнет после обновления основной темы.
- Определите список URL, которые должны быть закрыты.
- Выберите условие: ID, шаблон, тип записи, архив, поиск, таксономия.
- Добавьте фильтр
wp_robotsв дочернюю тему или мини-плагин. - Очистите кеш страницы и кеш CDN, если он есть.
- Проверьте исходный HTML и ответ сервера.
Для мини-плагина достаточно одного файла, например wp-content/plugins/site-noindex/site-noindex.php:
<?php
/**
* Plugin Name: Site Noindex Rules
*/
add_filter( 'wp_robots', function( $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_page( 321 ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Такой подход удобен тем, что правила можно быстро отключить, не трогая тему. Для технических правок это обычно безопаснее.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что meta robots реально попал в HTML и не перезаписывается кешем или другим плагином.
- Откройте страницу и посмотрите исходный код: должен быть
<meta name="robots" content="noindex,follow">или эквивалентный тег. - Проверьте ответ через
curlили DevTools, чтобы исключить кешированную версию. - Если используется SEO-плагин, убедитесь, что он не добавляет второй конфликтующий robots-тег.
- В Search Console отправьте URL на повторную проверку после переобхода.
Пример быстрой проверки через терминал:
curl -s https://example.com/test-page/ | grep -i robotsЕсли в ответе нет нужного meta-тега, значит правило не сработало или его перебил шаблон темы, плагин кеша либо SEO-плагин.
Частые ошибки и как их исправить
Страница закрыта в robots.txt, но всё ещё в индексе
Это частая путаница. Disallow в robots.txt не равен noindex. Если URL уже в индексе, поисковик может продолжать показывать его без обхода страницы. Решение: вернуть доступ для обхода и поставить noindex в HTML.
Поставили noindex, но забыли про кеш
Если на сайте есть page cache, CDN или серверный кеш, старый HTML может отдаваться ещё какое-то время. После правки очистите все уровни кеша, иначе проверка покажет старую версию страницы.
Добавили два robots-тега
Иногда тема уже выводит meta robots, а SEO-плагин добавляет свой. Поисковик обычно ориентируется на конфликтную разметку не так, как ожидает разработчик. Нужно оставить один источник правды: либо плагин, либо код.
Закрыли важные страницы по ошибке
Если правило написано слишком широко, можно случайно закрыть полезные страницы: например, все записи определённой категории или весь архив таксономии. Перед публикацией проверьте условия is_page(), is_search(), is_tax() и списки ID.
Безопасность и производительность
Сам по себе noindex почти не влияет на производительность, но плохая реализация может создать лишнюю поддержку и путаницу в индексации. Лучше держать правила в одном месте и не размазывать их по нескольким плагинам.
Если на сайте много технических дублей, полезно сначала убрать причину появления URL, а уже потом ставить noindex. Иначе поисковик будет продолжать тратить обход на мусорные страницы, а вы — поддерживать сложную логику исключений.
Для сайтов, где часто появляются дубли, служебные архивы и лишние страницы, удобно использовать инструменты для технической чистки и SEO-настроек. Если нужен плагин с упором на удаление дублей и базовую санитарную настройку WordPress, можно посмотреть Clearfy Pro. Но даже с плагином важно понимать, какие страницы вы закрываете и почему.
Что должно получиться в итоге
После настройки у вас есть предсказуемое правило: нужные страницы остаются доступными для пользователей, но не претендуют на ранжирование. В исходном HTML виден корректный meta robots, кеш обновлён, а в Search Console URL постепенно уходит из индекса или меняет статус после переобхода.
Если страница всё ещё появляется в поиске, проверьте три вещи в таком порядке: доступность страницы для обхода, наличие noindex в финальном HTML и отсутствие конфликтов с другими плагинами или шаблонами.