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