Страницы поиска в WordPress часто становятся мусорными входными точками: у них нет стабильного контента, они плодят дубли и могут тянуть в индекс десятки тысяч URL с параметрами вроде ?s=. При этом сам поиск на сайте должен продолжать работать для пользователей и для внутренней навигации. Задача не в том, чтобы отключить поиск, а в том, чтобы правильно убрать из индекса именно результаты поиска.
Когда это проблема, а когда нет
Если у сайта небольшой объём контента и поиск используется только как вспомогательный инструмент, индексировать страницы результатов обычно не нужно. Особенно это заметно, когда поисковый запрос генерирует пустые, почти пустые или однотипные страницы. В отчётах поисковых систем такие URL часто выглядят как дубли, а в логах сервера — как бесполезные обходы.
Но есть и исключения. Если поиск на сайте фактически работает как каталог, а запросы формируют полезные посадочные страницы, закрывать всё подряд не стоит. В этом случае нужно отдельно оценивать, какие запросы реально несут ценность, а какие создают технический шум.
Диагностика: как понять, что в индекс попали именно поисковые страницы
Проверка начинается не с кода, а с фактов. Сначала посмотрите, как выглядят URL поиска в индексе и в логах.
- в поисковой консоли есть URL с параметром
?s=; - в выдаче встречаются страницы вида
/page/2/?s=...; - в логах сервера много запросов к поиску от ботов;
- в HTML таких страниц нет явной инструкции
noindex; - в sitemap они не должны попадать, но иногда проблема возникает именно из-за шаблона темы или плагина.
Если нужно быстро проверить конкретную страницу, откройте результат поиска и посмотрите исходный код. В идеале там должен быть тег robots с noindex и follow, либо страница должна отдавать заголовок X-Robots-Tag на уровне ответа сервера.
Что делать: рабочие способы закрыть поиск от индексации
Есть три практических подхода: через SEO-плагин, через код темы или плагина, и через серверные заголовки. Для большинства сайтов достаточно первого или второго варианта. Серверный заголовок полезен, если вы хотите жёстко зафиксировать правило независимо от шаблона.
| Способ | Плюсы | Минусы |
|---|---|---|
| SEO-плагин | Быстро, без правки кода, удобно для редактора | Зависит от конкретного плагина и его настроек |
| Код в теме/плагине | Контроль, минимум зависимостей | Нужно следить за обновлениями и местом размещения |
| X-Robots-Tag | Работает на уровне ответа, не зависит от шаблона | Не всегда удобно настраивать на общем хостинге |
Вариант 1: добавить noindex через фильтр WordPress
Если тема или SEO-плагин не закрывают поиск автоматически, можно добавить мета-тег в <head>. Ниже пример для дочерней темы или небольшого mu-plugin:
<?php
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Этот вариант простой, но у него есть ограничение: он работает только если поисковая страница реально отдаёт HTML-шаблон WordPress. Если какой-то плагин подменяет вывод, лучше проверить результат отдельно.
Вариант 2: задать X-Robots-Tag для поисковых страниц
Если нужен более надёжный способ, можно отправлять заголовок ответа. Это особенно полезно, когда вы не хотите зависеть от разметки темы.
<?php
add_action( 'template_redirect', function () {
if ( is_search() && ! headers_sent() ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
} );Здесь важно не ставить заголовок слишком поздно. Если до этого уже был вывод в браузер, header() не сработает. Поэтому код должен выполняться до начала HTML-вывода.
Вариант 3: использовать настройки SEO-плагина
Если на сайте уже стоит SEO-плагин, проверьте, не отключены ли для поиска правила индексации. В некоторых конфигурациях поиск закрывается автоматически, но после миграции, смены темы или импорта настроек это правило может быть потеряно. В таком случае лучше не дублировать логику в коде, а привести к одному источнику правды: либо плагин, либо шаблон, либо сервер.
Если вы используете Clearfy Pro, имеет смысл проверить блоки, связанные с технической чисткой сайта и дублями, но не полагаться на абстрактные «SEO-улучшения» без проверки исходного кода страницы. Смысл не в названии функции, а в том, что на странице поиска должен появиться реальный noindex.
Пошаговая схема внедрения
- Откройте несколько поисковых URL с разными запросами.
- Проверьте, есть ли у них мета-тег robots или заголовок
X-Robots-Tag. - Выберите один способ закрытия, а не несколько одновременно.
- Внесите правку в дочернюю тему, mu-plugin или настройки SEO-плагина.
- Очистите кэш страницы, объекта и CDN, если он есть.
- Переобойдите URL в инструменте проверки страниц поисковой системы.
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте исходный код страницы поиска и убедитесь, что там есть нужная директива. Если вы используете заголовок, проверьте ответ через curl:
curl -I "https://example.com/?s=тест"В ответе должен быть заголовок вида X-Robots-Tag: noindex, follow, если вы выбрали серверный вариант. Для мета-тега проверьте HTML-исходник, а не отрендеренную страницу в браузере: некоторые расширения и кэш могут вводить в заблуждение.
Дополнительно полезно посмотреть, не попадают ли поисковые URL в sitemap и внутренние ссылки. Если тема или плагин генерируют ссылки на поиск в блоках, меню или хлебных крошках, это не ошибка само по себе, но такие ссылки не должны становиться индексируемыми посадочными страницами.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt и на этом остановились
Это частая ошибка. Запрет в robots.txt не гарантирует удаление URL из индекса, если поисковик уже знает адрес. Для результата нужен именно noindex или корректная обработка ответа.
Поставили noindex и одновременно запретили сканирование
Если страница закрыта от обхода, робот может не увидеть директиву noindex. В итоге URL может остаться в индексе как «запрещённый к сканированию», но не исчезнуть быстро. Для поисковых страниц обычно безопаснее сначала дать возможность увидеть директиву, а уже потом при необходимости ограничивать обход точечно.
Добавили код в родительскую тему
После обновления темы правка исчезнет. Для таких задач используйте дочернюю тему или отдельный mu-plugin. Это особенно важно, если сайт поддерживается несколькими людьми и изменения должны переживать обновления.
Не очистили кэш
Если на сайте стоит page cache или CDN, старый HTML может продолжать отдавать страницу без noindex. После внедрения правки очистите все уровни кэша и проверьте ответ повторно.
Безопасность и производительность
С точки зрения производительности закрытие поисковых страниц от индексации само по себе не ускоряет сайт. Но оно снижает бесполезный обход и уменьшает шум в отчётах. Если на сайте много запросов к поиску, стоит отдельно посмотреть на качество самого поиска: пустые результаты, слишком тяжёлые запросы к базе, отсутствие ограничения по длине запроса.
Если вы правите кодом, не вставляйте его в произвольный файл темы. Лучше использовать небольшой mu-plugin: так изменение не потеряется при обновлении и его проще отключить при отладке. Для сайтов с несколькими ролями доступа это ещё и удобнее с точки зрения контроля изменений.
<?php
/*
Plugin Name: Search Noindex Helper
*/
add_action( 'template_redirect', function () {
if ( is_search() && ! headers_sent() ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
} );Такой мини-плагин проще сопровождать, чем правку в шаблоне, и он не зависит от того, какая тема активна.
Когда лучше не закрывать поиск полностью
Если поисковые страницы уже получают трафик по длинным запросам и реально помогают пользователю находить контент, закрывать их без анализа не стоит. В таком случае лучше сначала посмотреть, какие запросы приводят к полезным результатам, а какие создают пустые страницы. Иногда достаточно ограничить индексацию только для пустых выдач или для запросов с параметрами, а не для всего поиска целиком.
Главный критерий простой: если страница не несёт самостоятельной ценности для внешнего поиска, ей не место в индексе. Но внутренний поиск при этом должен остаться рабочим и быстрым.