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

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

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

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

Сначала не трогайте код, а проверьте, что именно индексируется. В Search Console и в логах обхода обычно видно несколько типичных симптомов:

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

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

Что не стоит делать

Неправильный подход — просто запретить всё через robots.txt. Да, это может сократить обход, но не гарантирует удаление уже известных URL из индекса. Для страниц поиска обычно нужен noindex на уровне HTML-ответа, а не только запрет сканирования.

Как закрыть страницы поиска от индексации

Есть три нормальных варианта: через SEO-плагин, через код в теме или через серверную логику в дочерней теме/мини-плагине. Если задача точечная, код часто надёжнее: вы контролируете поведение без лишних настроек и зависимостей.

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

Вариант 1: добавить noindex для страниц поиска

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

add_action( 'wp_head', function () {
    if ( is_search() ) {
        echo "<meta name=\"robots\" content=\"noindex,follow\" />\n";
    }
}, 1 );

Этот код можно разместить в functions.php дочерней темы или в небольшом mu-plugin. Для продакшена mu-plugin даже удобнее: он не зависит от смены темы.

Вариант 2: убрать поиск из XML-карты и внутренних ссылок

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

Проверьте:

  • виджет поиска в сайдбаре;
  • ссылки на результаты поиска в шаблонах;
  • автоматические блоки «похожие материалы», если они строятся на поисковых URL;
  • XML-карту сайта, если туда попали служебные страницы.

Вариант 3: ограничить мусорные параметры поиска

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

add_filter( 'get_search_link', function( $link, $search_query ) {
    return home_url( '/?s=' . rawurlencode( $search_query ) );
}, 10, 2 );

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

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

После внедрения не ограничивайтесь визуальной проверкой. Откройте несколько URL поиска и посмотрите исходный код страницы. В <head> должен появиться мета-тег noindex,follow.

Дальше проверьте три вещи:

  1. Страница поиска не получает статус index,follow из другого плагина.
  2. В HTML нет конфликтующего канонического URL на саму страницу поиска.
  3. URL с ?s= больше не попадают в новые отчёты индексации после переобхода.

Если у вас есть доступ к Search Console, отправьте страницу на повторную проверку и посмотрите, как поисковик интерпретирует директиву. Иногда индексация уходит не сразу, и это нормально: старые URL могут держаться в отчётах до следующего обхода.

Быстрая проверка через браузер

Откройте страницу поиска и выполните просмотр исходного кода страницы. Ищите строку:

<meta name="robots" content="noindex,follow" />

Если её нет, значит код не сработал, либо его перехватывает другой плагин SEO.

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

  • Добавили только robots.txt. Это не гарантирует удаление из индекса. Добавьте noindex в HTML-ответ.
  • Поставили noindex, но оставили каноникал на главную. Поисковик может трактовать это как конфликт сигналов. Канонический URL должен быть логичным и не подменять смысл страницы.
  • Код вставили в родительскую тему. После обновления правка пропадёт. Используйте дочернюю тему или mu-plugin.
  • Закрыли не только результаты поиска, но и саму форму поиска. Пользователь должен иметь возможность искать на сайте, даже если результаты не индексируются.
  • Смешали настройки нескольких SEO-плагинов. Один плагин может ставить noindex, другой — переопределять robots meta. Оставьте один источник правды.

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

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

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

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

Что проверить после внедрения

Перед тем как считать задачу закрытой, пройдитесь по чек-листу:

  • страницы ?s= отдают noindex,follow;
  • внутренние ссылки на поиск не создают новых дублей;
  • в Search Console нет роста новых URL поиска;
  • SEO-плагин не переопределяет мета-теги;
  • код размещён в дочерней теме или mu-plugin;
  • поиск на сайте продолжает работать для пользователей.

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

Как добавить поддержку Dark Mode в тему WordPress
23.01.2026
Как отображать динамические данные в теме WordPress без плагинов
10.12.2025
Как удалить избыточные метаданные в WordPress для оптимизации и безопасности
15.06.2026
Как добавить динамические таблицы в тему WordPress
19.03.2026
Как добавить динамические виджеты в тему WordPress
29.03.2026