wpnews.ru wordpress wpnews.ru

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

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

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

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

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

Особенно это заметно на новостных и контентных сайтах, где поисковые запросы часто одноразовые и не несут самостоятельной ценности для индекса. В этом случае лучше не пытаться «улучшать» такие страницы, а ограничить их индексацию и убрать из sitemap, если они туда попали через тему или SEO-плагин.

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

Перед правками нужно понять, какой вариант поиска у вас используется. В WordPress это может быть обычный GET-параметр s, а в некоторых темах и плагинах — отдельный красивый URL. Проверка занимает несколько минут.

  • Откройте несколько поисковых запросов на сайте и посмотрите адрес в браузере.
  • Проверьте исходный код страницы поиска: есть ли <meta name="robots" content="noindex">.
  • Посмотрите XML sitemap: не попадают ли туда URL поиска.
  • В Search Console проверьте отчёт по страницам с параметрами и исключённым URL.

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

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

Самый предсказуемый вариант — добавить noindex,follow на результаты поиска и при необходимости отключить их из sitemap. Это не мешает пользователю пользоваться поиском, но даёт поисковым системам понятный сигнал не индексировать такие страницы.

1. Добавляем noindex на страницы поиска

Если тема не управляет robots meta сама, можно сделать это через хук wp_robots. Он есть в современных версиях WordPress и подходит для точечной настройки директив.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

Этот код лучше размещать в дочерней теме или в небольшом mu-plugin, а не в файле основной темы. Тогда настройка не потеряется после обновления.

2. Убираем поисковые URL из XML sitemap

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

Для собственного sitemap-решения можно отфильтровать список URL до генерации. Пример ниже показывает принцип: не добавлять поисковые адреса в массив ссылок.

<?php
function wpnews_filter_sitemap_urls( array $urls ): array {
    $filtered = [];

    foreach ( $urls as $url ) {
        if ( isset( $url['loc'] ) && strpos( $url['loc'], '?s=' ) !== false ) {
            continue;
        }

        $filtered[] = $url;
    }

    return $filtered;
}

Если sitemap формирует плагин, используйте его встроенные настройки исключения. Не пытайтесь править XML вручную: при следующей генерации изменения исчезнут.

Сравнение подходов

ПодходКогда подходитМинус
noindex через wp_robotsНужно закрыть результаты поиска от индексации без поломки поискаНе убирает уже проиндексированные URL мгновенно
robots.txtНужно сократить обход мусорных URL, если они ещё не в индексеНе лучший способ для удаления уже известных страниц
Отключение внутреннего поискаПоиск на сайте не нужен вообщеПользователи теряют функциональность

Если нужен быстрый вариант без кода

На сайтах, где уже стоит SEO-плагин, проще включить настройку noindex для поисковых страниц в интерфейсе плагина. Это особенно удобно, если у вас несколько редакторов и вы не хотите хранить логику в теме. Но проверяйте, что плагин действительно ставит директиву на страницу поиска, а не только меняет canonical.

Если нужен более широкий набор инструментов для удаления дублей и технической чистки, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае полезно понимать, что именно делает плагин, чтобы не полагаться на галочки вслепую.

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

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

  1. Откройте страницу поиска с реальным запросом, например /?s=test.
  2. Посмотрите исходный код страницы и найдите robots meta.
  3. Проверьте заголовки ответа, если используете серверные правила или кэш.
  4. Убедитесь, что страница не попадает в sitemap.
  5. Через несколько дней проверьте отчёты Search Console на предмет снижения числа таких URL в обходе и индексации.

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

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

Ставят только robots.txt и ждут удаления из индекса

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

Закрывают поиск, но оставляют ссылки в шаблоне

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

Ломают поиск для пользователей

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

Не учитывают кэш

После правки robots meta или canonical старый HTML может продолжать отдаваться из кэша. Сначала очищайте кэш плагина, затем серверный кэш и CDN, если он есть.

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

Если на сайте много поисковых запросов, это ещё и нагрузка на базу. WordPress поиск по умолчанию не самый быстрый, особенно на больших архивах. Когда запросов много, имеет смысл смотреть не только на индексацию, но и на производительность самой формы поиска.

  • Не выводите поисковые результаты в sitemap.
  • Не добавляйте ссылки на страницы поиска в контент и меню.
  • Следите, чтобы кэш не сохранял персонализированные результаты, если поиск дорабатывался вручную.
  • Если используете сторонний поисковый плагин, проверьте его настройки индексации и canonical.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше