Ситуация типовая: в индексе оказываются служебные страницы, результаты поиска по сайту, архивы с дублями, тестовые записи или приватные разделы. Удалять их из поиска вручную неудобно, а ставить отдельный SEO-плагин только ради одной задачи не всегда разумно. В WordPress это можно решить точечно: через noindex, заголовок X-Robots-Tag и аккуратную настройку шаблонов.
Важно сразу разделить две задачи. Запрет индексации не равен запрету обхода. Страница может быть доступна по URL, но не попадать в поиск. Если нужно именно скрыть контент от посетителей, нужен другой механизм: права доступа, пароль, редирект или HTTP-авторизация.
Когда это действительно нужно
Не все страницы стоит закрывать от индексации. Обычно речь идет о таких сценариях:
- страницы внутреннего поиска WordPress;
- архивы с тонким или дублирующимся контентом;
- страницы пагинации, которые не несут самостоятельной ценности;
- технические URL: thank-you page, тестовые лендинги, черновые разделы;
- страницы авторов на сайте с одним редактором, если они дублируют архивы записей;
- служебные таксономии и метки, которые создают много пустых или слабых страниц.
Диагностика проблемы: что именно уже индексируется
Перед правкой кода проверьте, какие URL реально попали в индекс и почему. Иначе легко закрыть не те страницы и потерять трафик.
Что смотреть в первую очередь
- отчет в Google Search Console по страницам с индексированием;
- мета-тег
robotsв исходном коде страницы; - наличие канонического URL;
- ответ сервера для URL: 200, 301, 404 или 410;
- не генерирует ли тема или плагин дубли через архивы, фильтры и параметры.
Если страница уже проиндексирована, одного noindex недостаточно для мгновенного исчезновения из выдачи. Поисковик должен переобойти URL и увидеть запрет. Поэтому решение лучше сочетать с нормальной каноникализацией и, если нужно, с удалением ссылок на эту страницу из сайта.
Как запретить индексацию через код
Самый практичный вариант — добавить фильтр, который будет выводить noindex, follow только на нужных типах страниц. Это безопаснее, чем ставить глобальный запрет на весь сайт.
<?php
add_filter( 'wp_robots', function( array $robots ) {
// Пример: закрываем поиск по сайту и страницу 404.
if ( is_search() || is_404() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
// Пример: закрываем архивы меток.
if ( is_tag() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот способ работает через стандартный фильтр WordPress wp_robots. Он подходит для современных тем и не требует вмешательства в шаблоны header.php. Если тема уже выводит robots meta, фильтр обычно подхватывается корректно.
Если нужен запрет только для конкретной страницы
Иногда надо закрыть одну страницу по ID или slug. Тогда лучше проверять конкретный объект, а не тип страницы целиком.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_page( 42 ) || is_page( 'thank-you' ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Если ID страницы может меняться между окружениями, надежнее ориентироваться на slug. Но для сложных проектов лучше вынести список URL в отдельную настройку темы или мини-плагина, чтобы не править код каждый раз вручную.
Когда лучше использовать X-Robots-Tag
Для PDF, изображений, архивов вложений и некоторых служебных ответов удобнее HTTP-заголовок X-Robots-Tag. Он работает даже там, где нет HTML-страницы с meta robots.
<?php
add_action( 'send_headers', function() {
if ( is_attachment() ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
} );Это полезно, если у вас в индексе всплывают страницы вложений. Но не забывайте: если вложения уже открыты для индексации и на них есть входящие ссылки, поисковик может какое-то время продолжать их видеть.
Пошаговое решение без лишнего риска
- Определите список URL, которые нужно закрыть.
- Проверьте, не нужны ли они пользователям из поиска внутри сайта.
- Добавьте точечный фильтр
wp_robotsили заголовокX-Robots-Tag. - Убедитесь, что на странице есть корректный
canonical, если это дубль. - Удалите внутренние ссылки на закрываемые URL, если они не нужны.
- Переобойдите страницы через Search Console и проверьте статус индексации.
Сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
Код через wp_robots | Нужно закрыть отдельные страницы, архивы, поиск | Требует правки темы или мини-плагина |
X-Robots-Tag | Нужно закрыть не-HTML ответы, вложения, файлы | Сложнее отлаживать без доступа к заголовкам |
| SEO-плагин | Нужна массовая настройка без кода | Лишняя нагрузка и дублирование функций, если задача точечная |
Если на сайте уже стоит плагин для техничной чистки и SEO, например Clearfy Pro, проверьте, не дублирует ли он ваши правила. Два источника robots-настроек часто дают неожиданный результат: один модуль ставит noindex, другой переопределяет его на уровне шаблона.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что поисковик увидит именно то, что вы ожидаете.
- Откройте исходный код страницы и найдите
<meta name="robots". - Проверьте, что для нужного URL указан
noindex. - Если используете заголовок, посмотрите response headers в DevTools или через
curl -I. - Убедитесь, что канонический URL не указывает на закрытую страницу, если это не задумано.
- Отправьте URL на переобход в Google Search Console.
Пример проверки заголовков через консоль:
curl -I https://example.com/thank-you/В ответе должен быть либо X-Robots-Tag: noindex, follow, либо в HTML должен присутствовать корректный meta robots. Если этого нет, значит фильтр не сработал или подключен слишком поздно.
Частые ошибки и как их исправить
Ставят noindex на весь сайт
Это случается, когда правило пишут без проверки условий. В итоге из индекса исчезают и важные страницы. Исправление простое: ограничьте условие конкретным шаблоном, архивом или ID страницы.
Путают noindex и disallow
Disallow в robots.txt запрещает обход, но не гарантирует удаление URL из индекса. Если страница уже известна поисковику, она может оставаться в выдаче без описания. Для удаления из индекса надежнее использовать noindex и затем дождаться переобхода.
Закрывают страницу, но оставляют на нее внутренние ссылки
Если закрытый URL продолжает активно ссылаться из меню, хлебных крошек или блоков похожих записей, поисковик будет возвращаться к нему снова и снова. Уберите такие ссылки или замените их на более полезные адреса.
Оставляют дубль с открытым canonical
Если страница должна быть закрыта как дубль, canonical должен указывать на основную версию. Иначе поисковик может игнорировать ваш noindex дольше, чем ожидается.
Правят шаблон, а тема потом перезаписывает вывод
В некоторых темах robots meta формируется не в header.php, а через SEO-модуль или отдельный хук. Если правка не работает, ищите, кто именно выводит тег, и убирайте дублирующий код.
Практические советы по безопасности и производительности
Если вы добавляете правила в functions.php, делайте это в дочерней теме или в небольшом mu-plugin. Так правило не потеряется после обновления темы. Для проекта с несколькими типами закрываемых URL удобнее хранить список в одном месте и не размазывать условия по разным файлам.
Не стоит закрывать от индексации страницы только ради экономии краулингового бюджета, если они полезны пользователю. Сначала убирают дубли, слабые архивы и технические URL. Уже потом смотрят на вторичные страницы, которые не дают трафика и создают шум в индексе.
Если задача шире и нужно не только закрыть страницы, но и почистить дубли, служебные архивы и лишние элементы разметки, имеет смысл посмотреть в сторону специализированных инструментов для технической чистки сайта. Но для точечного сценария код обычно быстрее и прозрачнее.