На WordPress часто нужно закрыть от индексации не весь сайт, а только конкретные страницы: результаты поиска, архивы с пустым содержимым, служебные шаблоны, страницы авторов на небольшом проекте, внутренние фильтры или технические разделы. Если делать это через robots.txt, легко промахнуться: URL перестанет обходиться, но уже попавшая в индекс страница может там остаться. Для точечного управления лучше использовать noindex и, где уместно, заголовок X-Robots-Tag.
Ниже разберём, как понять, что именно нужно закрывать, как реализовать это в коде или через SEO-плагин, и как проверить, что поисковики получили правильную директиву.
Когда нужен noindex, а когда достаточно robots.txt
noindex отвечает за индексацию страницы, а robots.txt — за обход. Это не одно и то же. Если цель — убрать страницу из выдачи, нужен именно запрет индексации. Если цель — снизить нагрузку на сервер и не тратить краулинговый бюджет на технические URL, можно дополнительно закрыть обход в robots.txt, но не вместо noindex.
Типичные сценарии
- страницы внутреннего поиска WordPress с параметром
?s=; - архивы автора на сайте, где один автор и дублирующийся контент;
- страницы пагинации, если они создают мусорный индекс и не несут ценности;
- служебные шаблоны, которые доступны по прямому URL;
- страницы с фильтрами и параметрами, которые плодят дубли.
Диагностика: что именно попало в индекс
Перед изменениями стоит понять, что уже индексируется и почему. Иначе легко закрыть не ту страницу и потерять трафик. Проверьте:
- есть ли URL в поиске по точному адресу;
- какой у страницы текущий
<meta name="robots">; - не отдаёт ли шаблон заголовок
X-Robots-Tag; - не создаёт ли SEO-плагин свои правила поверх вашего кода;
- не дублируется ли страница через архив, категорию или параметр.
Удобный минимум для проверки — открыть исходный код страницы и найти robots-мета. Если там уже есть index, follow, а вы ожидаете запрет, значит правило не применилось или его перезаписал плагин.
Пошаговое решение через хук wp_robots
Начиная с WordPress 5.7, для управления robots-мета есть фильтр wp_robots. Это нормальный способ добавить noindex без правки шаблонов темы. Подходит, если нужно закрыть конкретные типы страниц.
<?php
add_filter( 'wp_robots', function( array $robots ) {
// Закрываем внутренний поиск WordPress.
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = false;
}
// Закрываем архивы автора на сайтах, где один автор.
if ( is_author() && ! is_admin() ) {
$robots['noindex'] = true;
}
return $robots;
} );Если нужно закрыть не только поиск и авторов, а, например, отдельную страницу по ID, можно добавить проверку по is_page() и ID шаблона:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_page( array( 42, 84 ) ) ) {
$robots['noindex'] = true;
}
return $robots;
} );Такой вариант лучше, чем вставлять мета-тег вручную в header.php: он не ломается при обновлении темы и работает предсказуемо.
Если нужна жёсткая защита: X-Robots-Tag в заголовке
Для файлов, PDF, выгрузок или страниц, где вы не хотите полагаться на HTML-шаблон, можно отправить HTTP-заголовок X-Robots-Tag. Это особенно полезно, если контент отдаётся не обычной темой, а через отдельный обработчик.
<?php
add_action( 'template_redirect', function() {
if ( is_search() || is_author() ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
} );Здесь важно не дублировать конфликтующие правила. Если SEO-плагин уже выводит noindex в мета-теге, а вы ещё и отправляете заголовок, это не ошибка, но усложняет диагностику. Для обычных страниц достаточно одного механизма.
Сравнение подходов
| Подход | Где применять | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используется Yoast SEO, Rank Math или аналог | Удобно для редакторов, меньше кода | Легко забыть, где именно включено правило |
Хук wp_robots | Точечные правила для страниц и архивов | Нативно для WordPress, не зависит от шаблона | Нужен код и контроль условий |
X-Robots-Tag | Файлы, нестандартные ответы, отдельные обработчики | Работает на уровне HTTP | Сложнее отлаживать, если несколько слоёв логики |
Как закрыть индексацию через SEO-плагин без кода
Если на сайте уже стоит SEO-плагин, проще использовать его настройки для конкретной страницы или типа записей. Это нормальный путь, если редактор должен управлять индексацией без разработчика. Но важно понимать: плагин должен быть один, а не несколько одновременно.
Проверьте в настройках страницы или архива наличие опции вроде noindex, не индексировать или discourage search engines. После сохранения снова откройте исходный код и убедитесь, что тег реально появился. Не ориентируйтесь только на интерфейс плагина.
Проверка результата после внедрения
После изменения правил проверьте не только HTML, но и ответ сервера. Делайте это в таком порядке:
- Откройте страницу в браузере и посмотрите исходный код.
- Убедитесь, что в
<head>естьnoindex. - Если используете
X-Robots-Tag, проверьте заголовки ответа через DevTools илиcurl -I. - Проверьте, не осталось ли старое правило в кэше страницы.
- Если страница уже была в индексе, отправьте её на повторную проверку в Search Console.
Пример проверки заголовков через терминал:
curl -I https://example.com/?s=testВ ответе ищите строку вида:
X-Robots-Tag: noindex, followЕсли её нет, значит условие в коде не сработало или запрос проходит через кэш, который отдаёт старую версию.
Частые ошибки и как их исправить
Закрыли URL в robots.txt, но он остался в индексе
Это ожидаемое поведение. robots.txt не удаляет страницу из выдачи сам по себе. Добавьте noindex и дождитесь переобхода.
Поставили noindex, но страница всё равно индексируется
Чаще всего причина в кэше, конфликте с SEO-плагином или в том, что правило применили не к тому типу страницы. Проверьте, какой шаблон реально отрабатывает: архив, страница, запись, поиск.
Случайно закрыли важные страницы
Так бывает, если условие слишком широкое, например is_page() без списка ID. Всегда ограничивайте правило конкретными страницами или типами записей.
Использовали несколько SEO-плагинов одновременно
Они могут выводить разные robots-мета и перетирать друг друга. На практике это приводит к хаосу в исходном коде. Оставьте один основной плагин и проверьте, не дублируется ли логика в теме.
Практические советы по безопасности и производительности
Если вы закрываете от индексации служебные страницы, это не значит, что их можно оставлять без контроля доступа. Для приватных разделов лучше ограничить доступ по ролям или паролю, а не надеяться только на noindex. Поисковик не покажет страницу в выдаче, но любой пользователь с URL может её открыть.
Для производительности полезно не плодить лишние архивы и параметры. Если фильтр или поиск создают множество дублей, лучше сначала убрать источник проблемы: отключить ненужные архивы, сократить число публичных таксономий, нормализовать ссылки. В ряде проектов помогает и чистка технического мусора через инструменты вроде Clearfy Pro, но только как дополнение к нормальной логике шаблонов, а не вместо неё.
Короткий чек-лист перед публикацией
- Понять, какой тип страницы нужно закрыть.
- Выбрать один способ: SEO-плагин,
wp_robotsилиX-Robots-Tag. - Проверить, не конфликтует ли правило с кэшем.
- Убедиться, что важные страницы не попали под слишком широкое условие.
- Проверить исходный код и заголовки ответа.
- Отправить URL на переобход в Search Console, если страница уже была в индексе.
Если нужен именно редакционный контроль без постоянной правки кода, разумно вынести логику в небольшой mu-plugin или отдельный мини-плагин. Так правило не потеряется при смене темы и не будет зависеть от конкретного шаблона.