Внутренний поиск WordPress часто создаёт страницы, которые не должны попадать в индекс: пустые выдачи, дубли по разным запросам, URL с параметрами и страницы с тонким контентом. Если поисковик уже начал их обходить, это обычно видно в отчётах Search Console как страницы вида ?s= или как URL с низкой ценностью и высоким числом дублей.
Ниже — рабочие способы закрыть поиск от индексации без поломки самого поиска на сайте. Разберём, что именно нужно закрывать, где лучше использовать код, а где достаточно настроек robots.txt или SEO-плагина.
Когда проблема уже есть: как понять, что поиск индексируется
Сначала стоит убедиться, что речь именно о внутреннем поиске WordPress, а не о страницах рубрик или фильтров. Типичный признак — в индексе появляются URL с параметром s, например / ?s=запрос или /search/запрос/, если тема или плагин меняют структуру поиска.
Проверить это можно несколькими способами:
- в Google Search Console открыть отчёт по страницам и поискать URL с
?s=; - выполнить запрос в поиске Google:
site:example.com ?s=; - посмотреть, не отдают ли страницы поиска заголовок
indexвместоnoindex; - проверить, не закрыт ли поиск только в
robots.txtбезnoindex.
Последний пункт важен: запрет в robots.txt не удаляет уже проиндексированные URL и не всегда мешает поисковику сохранить их в базе как «известные, но не просканированные». Для чистого результата обычно нужен именно noindex.
Что лучше закрывать: robots.txt, meta robots или код
У каждого способа своя задача. Если нужен быстрый и грубый запрет на обход, помогает robots.txt. Если нужно гарантированно убрать страницу из индекса, лучше использовать noindex на самой странице поиска. Если тема или SEO-плагин не дают нужного контроля, подключают фильтр в коде.
| Способ | Что делает | Когда подходит | Ограничение |
|---|---|---|---|
| robots.txt | Запрещает обход | Чтобы снизить нагрузку и отсечь мусорные запросы | Не гарантирует удаление из индекса |
| meta robots noindex | Просит не индексировать страницу | Для страниц поиска, которые уже доступны по URL | Страница должна быть доступна для обхода |
| Код в теме/плагине | Даёт точечный контроль | Если нужен предсказуемый результат без лишних плагинов | Нужно аккуратно тестировать на боевом сайте |
Пошаговое решение через код: noindex для страницы поиска
Если у вас обычный поиск WordPress на параметре ?s=, самый надёжный вариант — добавить noindex, follow для страниц поиска. Это не ломает сам поиск, но убирает его страницы из индекса.
Добавьте код в functions.php дочерней темы или в небольшой mu-plugin. Второй вариант безопаснее, если тема может обновляться и вы не хотите терять правку.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот фильтр работает на современных версиях WordPress, где формируется массив robots-правил. Если на сайте уже подключён SEO-плагин, он может переопределять поведение, поэтому после внедрения нужно проверить итоговый HTML.
Если тема выводит собственный meta robots
Некоторые темы или SEO-плагины добавляют свои мета-теги. Тогда одного фильтра WordPress может быть недостаточно: на странице поиска может появиться сразу несколько meta robots, а поисковик возьмёт не тот, который вы ожидаете. В этом случае нужно найти источник второго тега и отключить его в настройках плагина или темы.
Если SEO-плагин поддерживает настройку индексации архивов и специальных страниц, проще использовать его интерфейс. Но если нужна точечная логика только для поиска, код обычно надёжнее.
Как закрыть поиск через robots.txt и не навредить сайту
Если цель — уменьшить обход мусорных URL, можно добавить правило в robots.txt. Это особенно полезно, когда поисковые роботы часто заходят на бесполезные варианты поиска с длинными запросами.
User-agent: *
Disallow: /?s=
Disallow: /search/
Но здесь есть важная оговорка: если URL уже в индексе, одного Disallow мало. Поисковик может оставить адрес в базе без содержимого. Поэтому для удаления из выдачи robots.txt лучше использовать только вместе с noindex на самой странице.
Ещё одна практическая деталь: не закрывайте слишком широко путь / или служебные разделы, если не уверены в структуре сайта. Ошибка в robots.txt может случайно отрезать от обхода важные страницы.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром исходника главной страницы. Проверять нужно именно страницу поиска и её ответ сервера.
- Откройте URL поиска, например
https://example.com/?s=test. - Посмотрите исходный код страницы и найдите
meta name="robots"или заголовки robots, если они добавляются сервером. - Убедитесь, что есть
noindexи нет конфликтующегоindex. - Проверьте, что поиск по сайту всё ещё работает и выдача не пустая из-за лишнего запрета.
- В Search Console отправьте страницу на повторную проверку, если она уже была в индексе.
Если хотите проверить заголовки быстро, используйте curl:
curl -I "https://example.com/?s=test"Но помните: curl -I покажет только HTTP-заголовки. Если noindex добавляется через HTML-мета-тег, нужно смотреть полный ответ страницы, а не только заголовки.
Частые ошибки и как их исправить
Закрыли поиск только в robots.txt
Это самая частая ошибка. Страница перестаёт обходиться, но уже известный URL может остаться в индексе. Исправление простое: добавьте noindex на саму страницу поиска и дождитесь переобхода.
Поставили noindex, но страница всё равно индексируется
Обычно причина в конфликте с SEO-плагином, кэшем или темой. Проверьте исходный HTML без кэша, отключите временно оптимизацию, которая может подменять мета-теги, и убедитесь, что на странице нет второго robots-мета с index.
Закрыли слишком широкий шаблон URL
Если у вас кастомный поиск по пути /search/, не стоит закрывать этот путь, если он используется ещё и для других страниц. Сначала проверьте реальные URL на сайте, потом добавляйте правило. На проектах с нестандартной маршрутизацией лучше закрывать именно шаблон страницы, а не весь путь.
Ожидали мгновенного удаления из выдачи
Даже после правильной настройки поисковику нужно время на переобход. Если URL уже в индексе, он не исчезает сразу. Для ускорения можно отправить страницу на повторную проверку в Search Console, но это не отменяет обычный цикл переиндексации.
Практические советы по безопасности и производительности
Если поиском на сайте почти не пользуются, а в индексе много мусорных URL, имеет смысл не только закрыть их от индексации, но и снизить нагрузку на сервер. Внутренний поиск может генерировать тяжёлые запросы, особенно если тема или плагины добавляют сложную сортировку и фильтры.
- не индексируйте пустые и служебные поисковые страницы;
- не добавляйте лишние параметры в URL поиска без необходимости;
- проверьте, не кэшируются ли поисковые страницы как обычные HTML-страницы;
- если поиск часто атакуют ботами, ограничьте его на уровне WAF или сервера;
- не используйте одинаковые шаблоны для поиска и архивов, чтобы не создавать дубли.
Если на сайте уже есть SEO-плагин, иногда проще централизовать правила индексации в нём, а не размазывать логику по теме и robots.txt. Для проектов, где важна чистка дублей и техническая оптимизация, полезно держать такие правила в одном месте, чтобы не ловить конфликты после обновлений.
Когда лучше не трогать поиск кодом
Если у вас нестандартный поисковый движок, который используется как полноценный раздел сайта, не спешите ставить глобальный noindex. Сначала проверьте, не нужен ли этот раздел для трафика или внутренней навигации. В некоторых проектах поиск — это не мусорная страница, а полезная посадочная с фильтрами и контентом.
В таком случае решение должно быть точечным: закрывать только пустые результаты, только страницы с определёнными параметрами или только служебные варианты поиска. Это уже делается через логику темы или отдельного плагина, а не одним универсальным правилом.