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

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

Ниже разберём рабочие варианты: через robots.txt, noindex в HTML, фильтры WordPress и проверку результата. Для большинства сайтов достаточно аккуратной правки темы или небольшого MU-плагина.

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

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

Признаки, что закрывать поиск от индексации нужно

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

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

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

Диагностика: какие URL реально индексируются

Перед правками проверьте, как именно у вас устроен поиск. На разных темах и плагинах могут быть разные шаблоны выдачи. Иногда поиск отдаёт обычный архив, иногда отдельный шаблон, иногда подключён AJAX-поиск, который вообще не создаёт индексируемых страниц.

Что проверить вручную:

  • откройте несколько адресов вида /?s=тест и посмотрите исходный код;
  • найдите в <head> тег meta name="robots";
  • проверьте, есть ли rel="canonical" и на какую страницу он указывает;
  • посмотрите, не создаёт ли тема отдельный шаблон поиска с индексируемым заголовком и текстом.

Если у вас установлен SEO-плагин, он может уже ставить noindex на поиск. Но это нужно не предполагать, а проверить в исходнике страницы.

Пошаговое решение без плагинов

Самый надёжный способ — явно добавить noindex,follow для страниц поиска и, при необходимости, запретить их обход в robots.txt. Для WordPress это можно сделать через фильтр wp_robots.

1. Добавьте noindex для внутреннего поиска

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

    return $robots;
} );

Этот вариант работает на современных версиях WordPress, где формируется массив robots-директив. Он не ломает поиск для пользователей, но даёт поисковым системам понятный сигнал не индексировать результаты.

2. При необходимости добавьте канонический URL

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

<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( is_search() ) {
        return home_url( '/' );
    }

    return $canonical;
}, 10, 2 );

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

3. Ограничьте обход в robots.txt

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

<?php
add_filter( 'robots_txt', function( $output, $public ) {
    $output .= "\nDisallow: /*?s=\n";
    $output .= "Disallow: /search/\n";

    return $output;
}, 10, 2 );

Если у вас поиск работает не через ?s=, а через красивый URL вроде /search/term/, подставьте свой шаблон. Не копируйте правило вслепую: сначала посмотрите реальные адреса.

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

СпособПлюсыМинусыКогда использовать
noindex через wp_robotsПрямой сигнал поисковикам, не ломает поискНужно убедиться, что тег реально выводитсяПочти всегда как базовое решение
robots.txtСнижает обход, простая настройкаНе убирает уже известные URL из индексаКак дополнительная мера
SEO-плагинУдобно, если уже используетсяЛишняя зависимость от настроек плагинаЕсли у вас уже есть централизованное SEO-управление

Если используете SEO-плагин

Во многих проектах проще не писать код, а включить noindex для страниц поиска в SEO-плагине. Это нормальный вариант, если плагин уже стоит и вы понимаете, где именно он меняет robots-директивы. Но не стоит держать сразу два источника правды: например, плагин ставит index, а тема — noindex. В таком случае поведение может стать непредсказуемым.

Если вы используете Clearfy Pro, проверьте разделы, связанные с SEO-очисткой и дублями. Для сайтов с большим количеством технических URL это часто удобнее, чем разносить правила по теме и отдельным сниппетам. Ссылка на продукт: Clearfy Pro.

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

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

  • откройте страницу поиска и посмотрите исходный код;
  • убедитесь, что есть meta name="robots" content="noindex,follow" или эквивалентный набор директив;
  • проверьте, что каноникал не ведёт на саму поисковую выдачу, если вы его меняли;
  • посмотрите, не остались ли в sitemap URL поиска;
  • в Search Console проверьте, как Google видит страницу после переобхода.

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

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

Закрыли поиск в robots.txt, но URL остались в индексе

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

Поставили noindex, но он не выводится

Часто фильтр подключили слишком поздно, в теме есть собственный SEO-шаблон, или другой плагин перезаписывает robots-мета. Проверьте исходный код и отключите конфликтующие настройки.

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

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

Добавили слишком широкое правило в robots.txt

Например, запретили не только ?s=, но и другие полезные параметры. После этого могут пострадать фильтры, сортировки и внутренние ссылки. Всегда проверяйте реальные URL, а не шаблон из чужой статьи.

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

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

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

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

Как закрыть страницы поисковой выдачи в WordPress от индексации
27.08.2026
Как отключить метод отправки писем PHP mail в WordPress и настроить SMTP
16.02.2026
Как избежать проблем с производительностью при массовом импорте товаров в WooCommerce
07.05.2026
Отключение автопроизводства событий WooCommerce для оптимизации производительности
15.05.2026
Как автоматизировать удаление обновлений и загрузочных файлов WooCommerce
17.07.2026