Как закрыть от индексации страницы поиска WordPress и убрать дубли из выдачи

Страницы внутреннего поиска в WordPress часто попадают в индекс как отдельные URL с параметром ?s=. Для сайта это обычно лишний шум: поисковики тратят обход на пустые или почти пустые страницы, а в выдаче могут появляться дубли с тонким контентом. Проблема особенно заметна на проектах с большим количеством материалов, где внутренний поиск генерирует десятки тысяч вариантов запросов.

Решение зависит от того, что именно вы хотите убрать: только индексацию, только обход или и то и другое. Ниже разберём рабочую схему без выдуманных плагинов и без опасных правок ядра.

Когда это действительно проблема

Не каждая страница поиска должна быть скрыта. Если на сайте поиск используется как полноценный сценарий навигации и у него есть полезные посадочные страницы, закрывать всё подряд не стоит. Но в типичном WordPress-проекте URL вида / ?s=запрос создаются динамически, а их содержимое меняется от запроса к запросу. Для поисковика это слабый сигнал качества.

Типичные признаки

  • в Search Console появляются страницы с параметром s;
  • в индексе есть URL поиска с почти пустым содержимым;
  • бот часто ходит по внутреннему поиску, хотя пользы от него мало;
  • в выдаче видны дубли заголовков и сниппетов для разных запросов поиска.

Диагностика: что именно индексируется

Сначала проверьте, как WordPress отдаёт страницу поиска. Откройте несколько URL вручную, например /?s=тест и /?s=. Важно понять, есть ли у них уникальный <title>, мета-robots и canonical. Если на странице поиска стоит обычный индексируемый шаблон, поисковик может воспринимать её как полноценную страницу.

Полезно проверить и серверные ответы:

curl -I                 
⭐⭐⭐⭐⭐