Внутренний поиск WordPress часто создаёт страницы, которые не должны попадать в индекс: результаты поиска по пустым, дублирующимся или слишком коротким запросам, а иногда и страницы с параметром ?s=, которые поисковики начинают обходить как отдельные URL. Если сайт небольшой, это может выглядеть безобидно. На практике такие страницы размывают краулинговый бюджет, плодят дубли и мешают нормальной индексации полезных материалов.
Ниже разберём, как закрыть страницы поиска от индексации без лишних костылей: через код, через SEO-плагин и через проверку результата в реальном проекте.
Когда это действительно проблема
Не каждая страница поиска обязана быть закрыта. Если у вас каталог, база знаний или большой архив, отдельные поисковые страницы иногда полезны пользователю. Но для большинства контентных сайтов внутренний поиск не должен конкурировать с основными страницами в выдаче.
Типичные признаки
- в индексе появляются URL вида
/?s=запрос; - в Search Console растёт число страниц с параметрами;
- поисковик показывает пустые или слабые страницы поиска вместо нужных записей;
- в логах видно частые обходы URL поиска с разными запросами.
Если у вас уже есть статья про robots.txt, этого недостаточно: запрет в robots.txt не гарантирует удаление URL из индекса, если они уже известны поисковику. Для таких страниц обычно нужен именно noindex на уровне HTML-мета или заголовка.
Диагностика: что именно индексируется
Сначала проверьте, как WordPress отдаёт страницы поиска сейчас. Откройте несколько URL с параметром ?s= и посмотрите исходный код страницы. Ищите строку вида <meta name="robots" content="noindex, follow"> или похожую настройку.
Если мета-тега нет, поисковик может индексировать такие страницы по своему усмотрению. Если тег есть, но в индексе всё равно остаются старые URL, значит, нужно дождаться переобхода и дополнительно проверить каноникал, карту сайта и внутренние ссылки.
Что проверить вручную
- есть ли на странице поиска
noindex; - не попадает ли URL в XML-карту сайта;
- нет ли внутренних ссылок на поисковые результаты из меню, виджетов или шаблонов;
- не создаёт ли тема отдельный шаблон поиска с собственным выводом мета-тегов.
Пошаговое решение через код
Если вы контролируете тему или дочернюю тему, самый прямой способ — добавить noindex, follow для страниц поиска. Это не ломает навигацию по сайту, но даёт поисковику понятный сигнал не индексировать саму страницу результатов.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот фильтр работает в современных версиях WordPress и безопаснее, чем ручная вставка мета-тега в шаблон. Он не зависит от конкретного файла темы и не требует правки header.php.
Если у вас старая тема или нужен точечный контроль над выводом в <head>, можно добавить мета-тег через wp_head. Но это уже запасной вариант, потому что дублировать логику в шаблоне проще, чем потом поддерживать.
<?php
add_action( 'wp_head', function() {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow" />' . "\n";
}
} );Если нужно закрыть только пустой поиск
Иногда полезно индексировать страницы поиска по осмысленным запросам, но закрыть пустые или мусорные варианты. Тогда можно проверять сам параметр s и длину запроса. Это уже более тонкая настройка, но применять её стоит только если вы понимаете структуру трафика и реально отслеживаете поисковые запросы внутри сайта.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$query = trim( (string) get_search_query( false ) );
if ( $query === '' || mb_strlen( $query ) < 3 ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
}
return $robots;
} );Что выбрать: код, плагин или настройку темы
Если задача одна и понятная, код обычно надёжнее. Если сайт ведётся редактором без доступа к PHP, удобнее использовать SEO-плагин. Но важно понимать компромиссы.
| Подход | Плюс | Минус | Когда брать |
|---|---|---|---|
| Код в теме/плагине | Точный контроль, без лишних зависимостей | Нужен доступ к файлам и базовое понимание WordPress | Когда вы поддерживаете сайт сами |
| SEO-плагин | Удобно для редактора, часто есть интерфейс | Лишняя настройка может конфликтовать с темой | Когда нужен быстрый и понятный способ |
| robots.txt | Просто закрыть обход | Не гарантирует удаление из индекса | Только как дополнительная мера |
Если вы уже используете SEO-плагин, проверьте, умеет ли он задавать robots-мета для архивов и системных страниц. Например, в некоторых конфигурациях удобнее управлять этим централизованно, чем через код. Если нужен более широкий набор технических правок — от дублей до мелкой чистки разметки — иногда проще держать это в одном инструменте, чем разносить по теме и сниппетам. Но не стоит подключать плагин только ради одной строки noindex.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром страницы в браузере. Нужно проверить именно то, что видит робот.
- Откройте страницу поиска и посмотрите исходный код.
- Убедитесь, что в
<head>естьnoindex, follow. - Проверьте, не дублируется ли мета-тег дважды — это частая ошибка при одновременной настройке в теме и плагине.
- Отправьте URL на повторную проверку в Search Console, если страница уже была в индексе.
Если используете командную строку на сервере, можно быстро проверить заголовки и HTML через curl:
curl -L https://example.com/?s=test | grep -i robotsДля более точной проверки откройте страницу в режиме просмотра исходника и найдите robots-мета. Если тег есть, но в индексе URL остаётся, это нормально на короткой дистанции: поисковику нужно время на переобход и переоценку страницы.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt и ждут мгновенного удаления
Это самая распространённая ошибка. Disallow мешает обходу, но не всегда убирает URL из индекса. Если страница уже известна поисковику, нужен noindex.
Поставили noindex и одновременно запретили обход
Если робот не может зайти на страницу, он может не увидеть мета-тег noindex. В таких случаях поисковик дольше держит URL в индексе. Для уже известных страниц лучше сначала дать доступ на обход и отдать noindex.
Сделали noindex только в одном шаблоне
У WordPress может быть несколько путей вывода поиска: стандартный шаблон, тема, плагин, кастомный хук. Если мета-тег добавлен не в том месте, часть URL останется без защиты. Проверяйте именно итоговый HTML.
Забыли про канонический URL
Если страница поиска ссылается сама на себя или на другой каноникал, это может мешать интерпретации. Обычно для поиска лучше не усложнять логику: noindex плюс нормальная внутренняя навигация.
Практические советы по безопасности и производительности
Закрытие поиска от индексации не ускоряет сайт напрямую, но помогает снизить мусорный обход. Это особенно заметно на сайтах, где пользователи часто вводят случайные запросы, а поисковые боты потом пытаются обходить десятки вариантов URL.
- не добавляйте лишние параметры в URL поиска без необходимости;
- не выводите внутренние поисковые ссылки в sitemap;
- не дублируйте настройку robots в нескольких местах без проверки;
- если используете кастомный поиск, следите, чтобы он не создавал открытые страницы с пустым контентом;
- проверяйте, не индексируются ли страницы с результатами поиска по медиа, товарам или таксономиям отдельно.
Если у вас много технических дублей и системных страниц, часть таких задач удобнее закрывать централизованно через SEO-настройки и чистку разметки. Но для поиска лучше оставить точечное решение: оно проще в поддержке и легче проверяется.
Короткий рабочий чек-лист
- проверить, есть ли
noindexна страницах поиска; - убедиться, что
robots.txtне используется как единственная мера; - проверить исходный HTML и отсутствие дублей мета-тега;
- посмотреть, не попадают ли URL поиска в sitemap;
- отправить важные URL на переобход в Search Console.
Если нужна именно точечная защита внутренних страниц поиска, фильтр wp_robots — самый чистый вариант. Он не привязан к шаблону, не требует правки ядра и нормально переживает обновления темы.