Страницы внутреннего поиска WordPress часто попадают в индекс сами по себе: поисковый робот находит URL вида ?s=..., а дальше начинает собирать десятки и сотни пустых или почти пустых страниц. Для сайта это обычно лишний шум в индексе, размывание краулингового бюджета и мусор в отчетах по качеству страниц.
Проблема не в самом поиске, а в том, что WordPress по умолчанию не считает такие URL техническими. Если не вмешаться, поисковик может индексировать результаты поиска, пагинацию поиска и даже параметры, которые меняют выдачу. Ниже — рабочие способы закрыть это без поломки нормальной навигации по сайту.
Когда внутренний поиск становится проблемой
Сначала стоит убедиться, что речь действительно о поисковых страницах, а не о полезных посадочных. В индекс обычно попадают URL с параметром s, например / ?s=seo или /search/?s=seo, а также их вариации с пагинацией и дополнительными параметрами. Такие страницы редко дают ценность пользователю из поиска: контент на них зависит от запроса, а заголовки и сниппеты часто выглядят шаблонно.
Что проверить в первую очередь
- Есть ли в индексе URL с
?s=или/search/. - Появляются ли дубли одной и той же поисковой выдачи с разными параметрами.
- Не ведут ли внутренние ссылки на поиск из меню, футера или виджетов.
- Не индексируются ли страницы поиска через sitemap или сторонний SEO-плагин.
Если в Search Console или Яндекс.Вебмастере видно много URL поиска, это уже не косметика. Обычно такие страницы нужно либо закрывать от индексации, либо отдавать noindex и при этом не мешать пользователю пользоваться поиском на сайте.
Диагностика: почему поиск вообще индексируется
WordPress сам по себе не добавляет мета-тег noindex на поисковые страницы. Если у вас стоит SEO-плагин, он может делать это автоматически, но не всегда для всех сценариев. Частая ситуация: главная поисковая выдача закрыта, а пагинация поиска или URL с дополнительными параметрами — нет.
Проверка простая: откройте страницу поиска в браузере и посмотрите исходный код. Если в <head> нет <meta name="robots" content="noindex,follow">, значит поисковик может индексировать страницу. Еще полезно проверить заголовки ответа сервера и канонический URL, если их генерирует тема или плагин.
<?php
// Быстрая проверка в шаблоне или через временный mu-plugin.
if ( is_search() ) {
error_log( 'Search request: ' . home_url( add_query_arg( null, null ) ) );
}Этот фрагмент не решает проблему сам по себе, но помогает понять, какие именно URL реально открываются на сайте. Для диагностики иногда достаточно пройтись по логам и увидеть, какие поисковые запросы создают отдельные страницы.
Как закрыть поиск от индексации: рабочие варианты
Есть три нормальных подхода: через SEO-плагин, через код темы или через серверную логику. Выбор зависит от того, как у вас устроен сайт и кто потом будет поддерживать изменения.
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используется Yoast, Rank Math или аналог | Быстро, без правок темы | Не всегда покрывает все сценарии |
| Код в теме или mu-plugin | Если нужен точный контроль | Прозрачно, можно учесть исключения | Нужна аккуратность при обновлениях |
| Комбинация с robots.txt | Если нужно снизить обход роботом | Дополняет noindex | Не заменяет мета-тег и не гарантирует исключение из индекса |
Вариант 1: закрыть через SEO-плагин
Если на сайте уже есть SEO-плагин, сначала проверьте его настройки. Во многих случаях отдельная опция для поисковых страниц уже есть, и это самый безопасный путь: не нужно писать код и потом помнить, где именно лежит логика.
Но есть важный нюанс: не полагайтесь на название опции. После включения обязательно откройте страницу поиска и проверьте исходный код. Некоторые плагины ставят noindex только на основную выдачу, а пагинацию и служебные параметры оставляют без защиты.
Вариант 2: добавить noindex через код
Если нужен предсказуемый результат, можно добавить мета-тег через wp_head. Это рабочий и понятный способ, особенно если сайт без тяжелого SEO-плагина или если вы хотите закрыть только поиск, не затрагивая другие типы архивов.
<?php
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
}, 1 );Этот вариант не мешает пользователю искать по сайту, но сигнализирует поисковикам не индексировать страницу результатов. Атрибут follow оставляет роботам возможность проходить по ссылкам на странице, если они там есть.
Вариант 3: закрыть поиск на уровне robots.txt
Иногда добавляют директиву в robots.txt, чтобы сократить обход. Это полезно как дополнительная мера, но не как единственная защита. Если страница уже известна поисковику, один только Disallow не гарантирует ее удаление из индекса.
User-agent: *
Disallow: /?s=
Disallow: /search/Такой фрагмент уместен только если у вас действительно используются эти пути. Для сайтов с нестандартным поиском лучше не писать правила вслепую, а сначала посмотреть реальные URL.
Пошаговое решение без лишнего риска
- Проверьте, какие URL поиска уже есть в индексе и в отчетах сканирования.
- Определите, чем управляется SEO на сайте: плагином или кодом.
- Включите
noindex,followдля поисковых страниц. - При необходимости добавьте ограничение в
robots.txtкак вторичный сигнал. - Уберите внутренние ссылки на поиск из мест, где они не нужны.
- Проверьте, не генерирует ли тема отдельные шаблоны для поиска с лишними параметрами.
Если сайт большой, лучше сначала внедрить изменение на тестовой среде. Это особенно важно, если тема переопределяет search.php или SEO-плагин уже вмешивается в <head>.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Откройте страницу поиска и убедитесь, что в исходном коде появился мета-тег noindex,follow. Затем проверьте HTTP-ответ и канонический URL, если они используются.
- На странице поиска есть
meta robotsсnoindex,follow. - Поиск не попадает в XML-карту сайта.
- В Search Console URL поиска постепенно исчезают из отчета по индексированию.
- В логах обхода уменьшается число запросов к поисковым страницам.
- Пагинация обычных архивов сайта при этом не сломана.
Если у вас подключена Google Search Console, используйте проверку URL для конкретной страницы поиска. Это быстрее, чем ждать переобхода и гадать, сработала ли настройка.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но не добавили noindex
Это самая частая ошибка. Робот может перестать обходить страницу, но уже известный URL не обязательно исчезнет из индекса. Исправление простое: добавьте noindex,follow на саму страницу результатов.
Закрыли только главную страницу поиска
Иногда правило срабатывает только для is_search(), но сайт генерирует еще и пагинацию поиска, параметры сортировки или фильтры. В итоге в индекс уезжают вариации, хотя основная страница закрыта. Проверьте реальные URL и при необходимости расширьте логику.
Сломали поиск для пользователей
Если вместо noindex вы поставили редирект или жесткий запрет на уровне сервера, поиск может перестать работать вообще. Это плохой вариант для обычного сайта: пользователь должен получать результаты, просто они не должны индексироваться.
Переусердствовали с canonical
Не стоит канонизировать все поисковые страницы на главную без разбора. Для поисковой выдачи это часто выглядит неестественно и может мешать диагностике. В большинстве случаев достаточно noindex,follow.
Безопасность и производительность
Если вы добавляете код вручную, лучше делать это в mu-plugin или в дочерней теме, а не в родительской теме. Так изменение не потеряется после обновления. Для небольших правок это надежнее, чем править шаблоны напрямую.
Еще один практический момент: не создавайте лишние запросы к базе ради логики индексации. Для закрытия поиска достаточно условного тега в wp_head; не нужно каждый раз вытягивать дополнительные данные из wp_options или выполнять тяжелые проверки.
Если на сайте уже используется набор технических правок, удобно держать их в одном месте. Например, в Clearfy Pro есть инструменты для чистки WordPress и управления техническими настройками, что иногда упрощает поддержку таких задач: https://wpshop.ru/plugins/clearfy. Но даже в этом случае проверка руками обязательна: плагины не отменяют необходимость смотреть исходный код и отчеты индексации.
Когда лучше не закрывать поиск полностью
Иногда внутренний поиск сам по себе полезен как посадочная страница, если он формирует стабильные подборки и реально отвечает на запрос пользователя. Но это скорее исключение. Для обычного контентного сайта поисковые страницы почти всегда лучше оставлять доступными людям и закрывать для индексации.
Если сомневаетесь, ориентируйтесь на практический критерий: может ли эта страница быть самостоятельной точкой входа из поиска? Если нет, индексировать ее обычно не нужно.