WordPress Notes WPBit

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

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

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

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

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

Особенно часто проблема проявляется, если:

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

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

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

Дополнительно посмотрите:

  • отчёт «Страницы» в Google Search Console;
  • логические дубли в аналитике, если поисковые URL получают трафик из поиска;
  • исходный код страницы поиска: есть ли noindex и корректный canonical;
  • не добавляет ли тема отдельный шаблон поиска с собственными мета-тегами.

Что лучше: плагин, код или настройка темы

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

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

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

Самый практичный вариант — добавить noindex, nofollow для страниц поиска и при необходимости отключить их от sitemap. Для WordPress это можно сделать через фильтр wp_robots. Он поддерживается в современных версиях ядра и позволяет менять robots-правила без правки шаблонов.

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

    return $robots;
} );

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

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

Если нужен HTTP-заголовок X-Robots-Tag

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

<?php
add_action( 'template_redirect', function() {
    if ( is_search() && ! headers_sent() ) {
        header( 'X-Robots-Tag: noindex, nofollow', true );
    }
} );

Такой способ полезен, когда вы хотите закрыть от индексации именно ответ поиска, а не только HTML-страницу. Но не используйте его вслепую для всех страниц: проверяйте, что заголовок не конфликтует с настройками SEO-плагина.

Как сделать это через SEO-плагин

Если на сайте уже используется SEO-плагин, ищите настройку для архивов поиска или технических страниц. В разных интерфейсах она может называться по-разному: Search pages, Search results, noindex for search. Смысл один — поисковая выдача не должна индексироваться.

Плюс этого пути в том, что плагин обычно сам выставляет и meta robots, и canonical, и иногда исключает такие URL из sitemap. Минус — настройки могут меняться после обновлений, а на кастомных темах иногда приходится дополнительно проверять шаблон поиска.

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

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

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

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

Проверить заголовки можно так:

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

В ответе ищите X-Robots-Tag: noindex, nofollow, если вы использовали вариант с заголовком. Если закрытие сделано через HTML-мета-тег, откройте исходный код страницы и проверьте блок <head>.

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

Закрыли страницу в robots.txt, но она всё ещё в индексе

Это типичная ошибка. Disallow в robots.txt не удаляет уже известные URL из индекса. Если страница уже проиндексирована, нужен именно noindex или заголовок X-Robots-Tag, а затем повторная проверка в Search Console.

Поставили noindex, но canonical ведёт на саму поисковую страницу

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

Отключили индексацию, но поиск сломался для пользователей

Это уже не SEO, а ошибка шаблона. noindex не должен влиять на работу формы поиска или выдачи. Если после правок поиск перестал показывать результаты, проверьте, не был ли случайно изменён обработчик формы, action у <form> или rewrite-правила.

Добавили код в родительскую тему

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

Чек-лист перед публикацией правки

  • поисковые URL определены точно: /?s= или кастомный путь;
  • для них добавлен noindex или X-Robots-Tag;
  • canonical не указывает на технический дубль;
  • поисковые страницы не попадают в sitemap;
  • проверка через curl -I или исходный код подтверждает изменения;
  • в Search Console отправлен URL на переобход, если он уже индексировался.

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

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

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

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

×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »