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

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

Задача здесь не в том, чтобы отключить поиск, а в том, чтобы оставить его рабочим для пользователей и одновременно не отдавать поисковикам страницы вида ?s=... и их вариации.

Как понять, что проблема именно в страницах поиска

Сначала проверьте, действительно ли в индексе есть мусор от поиска. Самый быстрый способ — поиск по сайту в Google с оператором site:ваш-домен.ru inurl:?s=. Если в выдаче всплывают URL с параметром поиска, значит страницы уже попали в индекс или регулярно туда попадают.

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

Что именно нужно проверить

  • есть ли в индексе URL вида /?s=запрос;
  • открываются ли страницы поиска с кодом 200;
  • не создаются ли отдельные архивы для одинаковых запросов с разным регистром и кодировкой;
  • не генерирует ли тема отдельные шаблоны поиска без noindex;
  • не закрыт ли поиск слишком грубо через robots.txt, если он нужен пользователям.

Важно: robots.txt сам по себе не убирает уже проиндексированные URL. Он только ограничивает обход. Если страница уже в индексе, нужен либо noindex, либо корректный каноникал, либо редирект в зависимости от сценария.

Какие есть варианты решения

Для WordPress обычно используют три подхода: плагин для SEO, правку темы через wp_head и более жесткий вариант через редирект или noindex на уровне шаблона. Выбор зависит от того, нужен ли поиск как функция и насколько у вас кастомная тема.

ПодходКогда подходитПлюсМинус
SEO-плагинЕсли уже стоит Yoast, Rank Math или аналогБыстро и без правки темыЗависит от настроек плагина и его шаблонов
Код в теме или mu-pluginЕсли нужен точный контрольНе зависит от интерфейса плагинаНужно аккуратно тестировать обновления
Редирект с пустого поискаЕсли пустые запросы создают мусорУбирает бесполезные URLНельзя применять ко всем поисковым страницам без разбора

Пошаговое решение через код

Если вам нужен предсказуемый результат без лишней зависимости от SEO-плагина, добавьте noindex,follow для страниц поиска. Это оставит ссылки доступными для обхода, но не будет просить поисковик индексировать саму страницу выдачи.

Лучше поместить код в mu-plugin или в дочернюю тему, если вы уверены, что тема не меняется часто. Для production-сайта это надежнее, чем править родительскую тему.

<?php
/**
 * Plugin Name: Noindex for search results
 */
add_action('wp_head', function () {
    if (is_search()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

Этот вариант работает в большинстве стандартных тем. Но если у вас уже подключен SEO-плагин, проверьте, не выводит ли он свой собственный meta robots. Два разных тега с конфликтующими значениями — частая причина странного поведения.

Если нужно убрать пустые поисковые страницы

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

<?php
add_action('template_redirect', function () {
    if (!is_search()) {
        return;
    }

    $query = get_search_query(false);
    if (trim($query) === '') {
        wp_safe_redirect(home_url('/'), 302);
        exit;
    }
});

Здесь используется временный редирект 302, потому что пустой поиск — это не постоянная новая страница. Если вы поставите 301, поисковики могут закрепить редирект как постоянный, и потом будет сложнее менять логику.

Если у вас уже стоит SEO-плагин

В Yoast, Rank Math и похожих плагинах обычно есть настройка для noindex на страницах поиска. Это нормальный путь, если вы не хотите держать собственный код. Но проверяйте итоговый HTML, а не только галочку в админке.

После изменения настроек откройте страницу поиска в браузере и посмотрите исходный код. В <head> должен быть только один корректный robots-мета-тег. Если плагин добавляет canonical, он должен вести на саму страницу поиска или на релевантную страницу, а не на случайный архив.

Проверка результата после внедрения

Сделайте проверку в три шага. Без этого легко решить, что все работает, хотя страница по-прежнему индексируется.

  1. Откройте URL поиска вручную, например /?s=тест, и убедитесь, что в исходном коде есть noindex,follow.
  2. Проверьте заголовки ответа и код страницы через DevTools или curl.
  3. В Search Console отправьте страницу на повторную проверку и отследите, как меняется статус индексации.

Пример проверки через консоль:

curl -I 'https://example.com/?s=test'

Если вы используете код с wp_head, в ответе должен быть обычный 200 OK, но с мета-тегом noindex в HTML. Если вы сделали редирект для пустого поиска, проверьте, что он срабатывает только на пустой запрос и не ломает обычный поиск.

Частые ошибки и как их исправить

Закрыли поиск в robots.txt и на этом остановились

Это не решает проблему уже проиндексированных URL. Если страница уже в выдаче, добавьте noindex или настройте редирект для пустых запросов, а robots.txt используйте только как дополнительный слой.

Поставили noindex на все страницы с параметрами

Иногда вместе с поиском случайно закрывают фильтры, сортировки и полезные URL. Если у вас есть важные страницы с параметрами, проверьте логику шаблона и не применяйте правило слишком широко.

Сделали 301 на главную для любого поиска

Это ломает внутренний поиск. Пользователь ищет материал, а вместо результата попадает на главную. Если нужно убрать только мусорные запросы, фильтруйте именно пустые или заведомо некорректные значения.

Не проверили конфликт с SEO-плагином

Когда одновременно работает тема, кастомный код и SEO-плагин, легко получить два разных meta robots или несовместимый canonical. Откройте исходный код и убедитесь, что итоговый HTML содержит одну понятную инструкцию для поисковика.

Что еще стоит сделать для чистоты индекса

Если на сайте уже есть проблемы с дублями, имеет смысл посмотреть шире, чем только поиск. Часто рядом всплывают архивы тегов без контента, служебные страницы, пагинация с тонким содержимым и старые URL после смены структуры.

  • уберите из индекса служебные страницы, которые не несут ценности;
  • проверьте canonical на шаблонах архива и поиска;
  • не плодите одинаковые страницы с разными параметрами;
  • следите, чтобы поиск не создавал бесконечные комбинации URL;
  • после правок обновите sitemap, если он включает лишние URL.

Если нужен более широкий технический аудит дублей и служебных страниц, в WordPress-проектах часто используют Clearfy Pro для чистки типовых SEO-ошибок и лишних элементов. Но даже с плагином все равно нужно проверять итоговый HTML и индексацию вручную: автоматические настройки не заменяют контроль результата.

Как понять, что решение сработало

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

Если через несколько недель старые URL все еще висят в индексе, это не обязательно ошибка. Поисковику нужно время, чтобы переобойти и переоценить страницу. Главное — чтобы новые поисковые URL больше не накапливались.

Как отключить emoji и дублирующие скрипты в WordPress без поломки редактора и фронтенда
07.09.2026
Как закрыть архивы авторов от индексации в WordPress без удаления страниц и дублей
27.09.2026
Как отключить REST API для неавторизованных в WordPress без поломки редактора и внешних интеграций
14.09.2026
Как отключить архив авторов в WordPress без потери SEO и дублей
26.08.2026
Как отключить ревизии в WordPress и ограничить автосохранение без потери удобства редактирования
17.09.2026