Ситуация знакомая: в индексе появляются страницы поиска, служебные архивы, дубли с параметрами, тестовые разделы или приватные материалы, которые не должны участвовать в выдаче. Править robots.txt в таких случаях часто недостаточно: поисковик может увидеть URL, но всё равно держать его в индексе, если на него уже есть ссылки. Для точечного контроля нужен noindex и, в ряде случаев, ещё и запрет на переход по ссылкам.
Ниже разберём, как закрывать отдельные страницы и типы контента в WordPress без поломки сайта, как проверить результат и какие ошибки чаще всего мешают индексации исчезнуть.
Когда проблема действительно в индексации, а не в robots.txt
Сначала стоит понять, что именно попало в поиск. Если страница уже индексируется, а в коде нет noindex, поисковик может продолжать показывать её ещё какое-то время. Если же URL закрыт только в robots.txt, это не всегда убирает его из выдачи: робот может знать о странице по внешним ссылкам или по старым обходам.
Типичные сценарии
- страницы внутреннего поиска WordPress вида
/?s=...; - архивы автора на небольшом сайте, где один автор;
- страницы с параметрами сортировки и фильтрации;
- тестовые или временные страницы, которые забыли удалить;
- служебные страницы, которые не должны конкурировать с основным контентом.
Если задача именно убрать URL из индекса, ориентируйтесь на meta robots noindex или HTTP-заголовок X-Robots-Tag. Для WordPress это можно сделать точечно через код или плагин.
Что выбрать: плагин, код или заголовок
У каждого подхода есть своя зона применения. Если нужно закрыть несколько страниц руками, удобнее интерфейс SEO-плагина. Если правило должно работать системно для определённого типа страниц, надёжнее код. Если речь о PDF, изображениях или других файлах, лучше подходит HTTP-заголовок.
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно закрыть отдельные записи, архивы, таксономии | Быстро, без правки темы | Зависимость от интерфейса и настроек плагина |
| Код в теме или mu-plugin | Нужно правило для группы URL | Контроль, предсказуемость | Нужна аккуратность и тестирование |
X-Robots-Tag | Файлы, вложения, нестандартные ответы | Работает на уровне HTTP | Не всегда удобно для обычных страниц |
Если у вас уже стоит SEO-плагин, проверьте, умеет ли он задавать noindex для конкретных типов контента. Но если нужен именно технический контроль без лишней логики, проще добавить фильтр в WordPress.
Пошаговое решение: закрываем отдельные страницы через код
Самый практичный вариант — добавить условие, которое выводит noindex, follow только на нужных URL. Для этого можно использовать фильтр wp_robots, который есть в современных версиях WordPress.
Пример: закрыть страницу поиска и архивы автора
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_author() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант не трогает весь сайт. Он меняет только те страницы, которые вы явно указали в условии. Для небольших проектов это часто лучший баланс между простотой и контролем.
Пример: закрыть конкретную страницу по ID
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_page( 123 ) ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Здесь важно не перепутать задачи: nofollow не обязателен для удаления страницы из индекса. Если цель — просто убрать URL из поиска, обычно достаточно noindex. nofollow имеет смысл, когда не хотите передавать сигнал по ссылкам с этой страницы.
Если нужно закрыть архивы таксономии
Для тегов, рубрик или пользовательских таксономий логика будет похожей. Например, если рубрики на сайте пустые, дублируют навигацию или не несут самостоятельной ценности, их можно закрыть от индексации:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_category() && ! is_admin() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Не стоит закрывать всё подряд. Если рубрика собирает полезные материалы и уже получает трафик, noindex может навредить. Сначала проверьте, есть ли у неё поисковый спрос и входящие ссылки.
Как закрыть вложения и медиафайлы
Страницы вложений часто создают тонкие дубли: у изображения есть отдельная страница-attachment, но на ней почти нет контента. Если такие URL индексируются, они могут засорять выдачу.
В WordPress можно либо перенаправлять attachment-страницы на сам файл или родительскую запись, либо закрывать их от индексации. Если у вас уже есть SEO-плагин, часто проще включить редирект вложений. Если нужен именно noindex, используйте фильтр:
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_attachment() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Для PDF и других файлов иногда полезнее заголовок X-Robots-Tag. Его можно отправлять на уровне сервера или через PHP, если файл отдаётся через WordPress. Но если файл лежит в /uploads/ и отдаётся напрямую веб-сервером, править нужно конфигурацию сервера, а не тему.
Проверка результата после внедрения
После изменения правил не ограничивайтесь просмотром исходника в браузере. Нужно проверить, что поисковый робот действительно видит нужные директивы и что URL не конфликтует с другими сигналами.
- Откройте страницу и посмотрите исходный код: должен появиться
meta name="robots"сnoindex. - Проверьте, не стоит ли на этой же странице канонический URL на другой адрес, который ломает логику.
- В Search Console отправьте URL на проверку и посмотрите, как Google видит страницу.
- Убедитесь, что страница не закрыта одновременно в
robots.txtи черезnoindex, если вам нужно, чтобы робот смог зайти и увидеть запрет.
Если страница закрыта в robots.txt, робот может не добраться до мета-тега noindex. Для удаления уже известного URL из индекса это часто неудобно. Поэтому для страниц, которые нужно именно убрать из выдачи, лучше не блокировать их в robots.txt сразу.
Частые ошибки и как их исправить
1. Закрыли URL в robots.txt и ждёте удаления из поиска
Это самая частая ошибка. robots.txt запрещает обход, но не гарантирует удаление из индекса. Если URL уже известен поисковику, он может оставаться в выдаче без сниппета. Решение: вернуть доступ роботу и добавить noindex.
2. Поставили noindex только в визуальном шаблоне
Иногда разработчики вставляют мета-тег вручную в шаблон, но забывают про другие шаблоны: AMP-версии, мобильные шаблоны, отдельные типы страниц, кэшированные копии. Надёжнее использовать фильтр wp_robots или SEO-плагин, который применяет правило системно.
3. Закрыли важные страницы по ошибке
Если условие слишком широкое, можно случайно закрыть весь архив, включая полезные страницы. Например, is_archive() без уточнения может затронуть больше, чем вы ожидали. Перед публикацией проверьте список URL вручную.
4. Оставили конфликтующие сигналы
На странице может одновременно быть noindex, каноникал на другой URL и редирект в цепочке. Поисковик в такой ситуации не всегда ведёт себя предсказуемо. Сначала уберите лишние редиректы, потом проверьте каноникал, затем уже директивы robots.
Чек-лист перед публикацией изменений
- Проверил, какие именно URL нужно закрыть.
- Убедился, что страница не закрыта в
robots.txt, если нужен обход робота. - Добавил правило через
wp_robotsили SEO-плагин. - Проверил исходный код страницы.
- Сравнил канонический URL и директивы robots.
- Отправил URL на повторную проверку в Search Console.
- Проверил, не попали ли под правило важные страницы.
Практические советы по безопасности и производительности
Если вы вносите код вручную, не правьте файл темы напрямую без необходимости. Лучше использовать дочернюю тему или небольшой mu-plugin, чтобы правило не потерялось после обновления. Для одного-двух условий это особенно удобно: код остаётся изолированным и легко отключается.
Не ставьте тяжёлую логику в фильтр wp_robots. Он вызывается на фронтенде, поэтому условие должно быть простым и быстрым: проверка типа страницы, ID, таксономии. Не нужно делать там дополнительные запросы к базе, если можно обойтись стандартными conditional tags.
Если на сайте уже используется SEO-плагин, не дублируйте одно и то же правило в двух местах. Иначе потом сложно понять, кто именно добавил noindex и почему страница всё ещё не индексируется. В таких случаях лучше выбрать один источник правды: либо код, либо интерфейс плагина.
Для сайтов с большим количеством дублей и служебных URL иногда проще сначала навести порядок в технической базе, а уже потом закрывать отдельные страницы. Если нужна системная чистка дублей и служебных сигналов, можно посмотреть в сторону Clearfy Pro, но даже в этом случае важно понимать, какие именно страницы вы закрываете и зачем.
Когда лучше не закрывать страницу от индексации
Если страница получает трафик, имеет внешние ссылки или помогает навигации по сайту, закрытие от индексации может ухудшить видимость. Иногда правильнее не прятать URL, а улучшить его: добавить контент, убрать дубли, настроить canonical или переработать структуру архивов.
Техническое решение должно следовать за задачей, а не заменять её. Если страница полезна пользователю и поиску, noindex — не универсальный ответ. Но если это служебный или дублирующий URL, точечное закрытие через wp_robots обычно работает предсказуемо и без лишних побочных эффектов.