На многих WordPress-сайтах внутренний поиск незаметно создаёт отдельные URL вида /?s=.... Если такие страницы начинают попадать в индекс, они дают мало пользы: контент на них дублируется, сниппеты получаются случайными, а в отчётах по сканированию появляются десятки или сотни бесполезных адресов.
Проблема обычно не в самом поиске, а в том, что его результаты доступны для индексации, а иногда ещё и попадают в sitemap или внутренние ссылки. Ниже — как понять, что это именно ваш случай, и что делать без поломки поиска для пользователей.
Когда архивы поисковых запросов становятся проблемой
Если на сайте есть форма поиска, WordPress по умолчанию отдаёт страницу результатов по запросу. Для пользователя это нормально, но для поисковых систем такие страницы часто не несут самостоятельной ценности. Особенно если запросы короткие, случайные или генерируются ботами.
Типичные признаки
- в индексе появляются URL с параметром
?s=; - в Google Search Console растёт число страниц, обнаруженных, но не проиндексированных;
- в логах видно много запросов к поиску по мусорным или пустым фразам;
- страницы поиска получают заголовки и метаописания, которые не отражают реальный контент сайта;
- внутренний поиск используется как источник навигации, хотя по факту он создаёт слабые посадочные страницы.
Диагностика: как проверить, что индексируются именно поисковые URL
Сначала убедитесь, что проблема действительно в результатах поиска, а не в других дублях. Самый быстрый способ — поиск по сайту через оператор site: и проверка шаблона URL.
site:example.com inurl:?s=Если в выдаче есть страницы вида https://example.com/?s=..., значит поисковые результаты уже попали в индекс. Дополнительно проверьте:
- отчёт по страницам в Google Search Console;
- логи веб-сервера на частые запросы к
?s=; - исходный код шаблона поиска — нет ли там каноникала на саму страницу результатов;
- не добавляет ли SEO-плагин метатеги для search-страниц без вашей настройки.
Если поиск нужен только для пользователей, а не как отдельный тип посадочной страницы, его лучше закрыть от индексации и не давать ему накапливать мусорные URL.
Что делать: рабочие варианты
Есть три практических подхода. Выбор зависит от того, нужен ли вам сам поиск в выдаче, или вы хотите полностью убрать его из публичной части.
| Подход | Что делает | Когда подходит | Компромисс |
|---|---|---|---|
| Закрыть от индексации | Оставляет поиск для пользователей, но запрещает индексирование результатов | Почти всегда | URL остаются доступными, но не должны попадать в индекс |
| Редиректить пустой поиск | Убирает бессмысленные запросы и пустые страницы | Если много мусорных запросов | Нужно аккуратно обработать UX |
| Отключить поиск на фронтенде | Полностью убирает форму и результаты | Если поиск не используется | Пользователи теряют функциональность |
Вариант 1: закрыть результаты поиска от индексации
Самый безопасный путь — добавить noindex, follow для search-страниц. Это не ломает поиск, но говорит роботам не индексировать такие URL.
add_action( 'wp_head', function () {
if ( is_search() ) {
echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
}
}, 1 );Этот код можно добавить в дочернюю тему или в небольшой mu-plugin. Если у вас уже стоит SEO-плагин, проверьте, не дублирует ли он robots-мета. Два разных тега с противоречивыми директивами — частая причина странного поведения.
Вариант 2: убрать пустые и мусорные поисковые запросы
Если бот или пользователь отправляет пустой запрос, лучше не показывать страницу результатов вообще. Для этого можно сделать редирект на главную или на страницу поиска с сообщением об ошибке. Ниже пример с редиректом на главную для пустого запроса:
add_action( 'template_redirect', function () {
if ( is_search() ) {
$query = trim( get_search_query( false ) );
if ( $query === '' ) {
wp_safe_redirect( home_url( '/' ), 302 );
exit;
}
}
} );Если у вас важен UX, вместо редиректа можно вывести сообщение «Введите поисковый запрос» и не отдавать пустую выдачу. Но с точки зрения индексации редирект обычно чище.
Вариант 3: отключить поиск, если он не нужен
На некоторых проектах поиск вообще не используется: каталог маленький, навигация строится на меню и рубриках, а форма поиска только создаёт шум. В таком случае можно убрать форму из шаблона и не выводить search results page как отдельный сценарий.
Это уже не про SEO, а про архитектуру сайта. Если поиск не нужен, не стоит поддерживать его ради привычки. Но прежде чем отключать, проверьте статистику: иногда поиск используют чаще, чем кажется по ощущениям.
Пошаговое решение без лишних рисков
- Проверьте, есть ли в индексе URL с
?s=. - Посмотрите, не генерируются ли пустые запросы и мусорные параметры.
- Добавьте
noindex, followдля страниц поиска. - При необходимости обработайте пустой запрос редиректом или сообщением.
- Проверьте, не конфликтует ли это с SEO-плагином.
- Переобойдите важные страницы в Search Console и дождитесь переобхода.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Нужны конкретные признаки, что поисковые URL больше не индексируются и не создают мусор.
- в исходном коде search-страницы есть
<meta name="robots" content="noindex,follow" />; - в Search Console новые URL с
?s=перестают попадать в индекс; - в выдаче по
site:example.com inurl:?s=количество страниц снижается; - пустые запросы больше не создают отдельные страницы;
- в логах уменьшается число бесполезных обращений к поиску.
Если используете кэш, очистите его после правок. Иначе можно проверить старую версию страницы и решить, что код не работает.
Частые ошибки и как их исправить
Добавили noindex, но страницы всё равно в индексе
Это нормально в краткосрочной перспективе: поисковик должен заново обойти страницу. Если URL давно в индексе, удаление не происходит мгновенно. Проверьте, что тег действительно отдается в HTML, а не только в админке SEO-плагина.
Поставили disallow в robots.txt и решили, что этого достаточно
Запрет в robots.txt не гарантирует удаление уже известных URL из индекса. Более того, если робот не может зайти на страницу, он не увидит noindex. Для поисковых результатов обычно лучше сочетать корректный noindex и нормальную обработку пустых запросов.
Сломали поиск редиректом
Частая ошибка — редиректить вообще все search-страницы. Тогда пользователь не может искать по сайту. Редирект нужен только для пустых или заведомо мусорных запросов, а не для нормальной выдачи.
Не учли SEO-плагин
Если у вас уже стоит Yoast SEO, Rank Math или другой плагин, он может сам управлять мета-тегами. В таком случае лучше настроить поведение через интерфейс плагина или оставить только один источник правды, чтобы не получить конфликт директив.
Безопасность и производительность
Поисковые запросы часто используют боты для генерации нагрузки. Если сайт большой, а поиск работает медленно, это может заметно бить по базе данных. В таком случае полезно ограничить пустые запросы, включить кэширование там, где это возможно, и следить за логами.
Если вы хотите не только убрать мусорные страницы, но и навести порядок в техническом SEO, иногда проще собрать это в одном инструменте. Например, Clearfy Pro от WPShop закрывает часть типовых задач по чистке WordPress и управлению дублями: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно стоит понимать, какие URL вы закрываете и почему.
Если нужен быстрый чек-лист
- проверить индексацию
?s=черезsite:; - добавить
noindex, followдля search-страниц; - обработать пустые запросы;
- убедиться, что SEO-плагин не конфликтует с кодом;
- очистить кэш и перепроверить HTML;
- отправить важные страницы на переобход в Search Console.
Если сделать только один шаг, делайте именно noindex для результатов поиска. Это самый предсказуемый способ убрать мусорные страницы, не ломая поведение сайта для посетителей.