Страницы внутреннего поиска в WordPress часто попадают в индекс сами по себе: поисковый робот видит URL вида ?s=, получает уникальный title и начинает считать такие страницы отдельными документами. На небольшом сайте это выглядит как мусор в отчётах, а на крупном — ещё и как лишняя нагрузка на сервер, потому что поисковики регулярно обходят пустые или почти пустые выдачи.
Проблема обычно не в одной настройке, а в связке: тема выводит индексируемый шаблон поиска, SEO-плагин не закрывает его по умолчанию, а в sitemap или внутренних ссылках такие URL всё равно всплывают. Ниже — рабочие способы закрыть поиск от индексации и не сломать пользовательский сценарий.
Когда это действительно проблема
Сначала стоит убедиться, что речь именно о страницах поиска, а не о нормальных посадочных. Если в индексе есть URL с параметром ?s=, это почти всегда внутренний поиск WordPress. Такие страницы редко дают ценность для поиска: контент на них динамический, часто пустой, а заголовок формируется автоматически.
Что проверить в первую очередь
- есть ли в индексе URL вида
/ ?s=запросили?s=; - открывается ли страница поиска с кодом ответа
200; - есть ли на ней мета-тег
noindex; - не попадает ли поиск в XML-карту сайта;
- не создаёт ли тема отдельный шаблон поиска с лишними ссылками и блоками.
Если поиск уже проиндексирован, одного robots.txt обычно недостаточно. Поисковик может продолжать хранить URL в индексе, даже если перестанет его обходить. Поэтому лучше закрывать поиск в несколько слоёв: мета-тегом, заголовком ответа и, при необходимости, правилом в robots.txt.
Диагностика: как понять, что сейчас происходит
Откройте любую страницу поиска и посмотрите исходный код. Если в <head> нет noindex, это уже первый сигнал. Затем проверьте заголовки ответа — иногда тема или плагин ставят мета-тег, но не отправляют X-Robots-Tag, и это хуже для нестандартных ответов.
curl -I