Ситуация типовая: на сайте есть страницы, которые должны открываться пользователю, но не должны попадать в поиск. Это могут быть результаты внутреннего поиска, страницы авторов, архивы по датам, служебные разделы, тестовые записи или дубли, которые создаёт тема и плагины. Если закрыть их неправильно, можно либо не добиться эффекта, либо случайно убрать из индекса нужные URL.
Ниже разберём рабочую схему: что именно закрывать через meta robots, что — через robots.txt, а где лучше вообще не трогать robots и решать задачу через каноникал, редирект или настройку самого WordPress.
Какие страницы действительно стоит закрывать
Не каждая «лишняя» страница требует запрета в robots.txt. Для SEO важна не только индексация, но и то, как поисковик понимает назначение URL. Если страница полезна пользователю, но не должна ранжироваться, чаще подходит noindex. Если это технический URL, который не должен даже обходиться роботом, тогда уже уместен запрет в robots.txt.
Типичные кандидаты на закрытие
- страницы результатов внутреннего поиска вида
?s=; - архивы по датам, если они не дают ценности;
- страницы авторов на сайтах с одним автором;
- служебные страницы, создаваемые темой или плагином;
- дубли пагинации и фильтров, если они не нужны в поиске;
- тестовые или временные записи, которые уже опубликованы.
Если речь о дублях контента, иногда правильнее сначала убрать сам источник дубля. Например, отключить лишний архив, настроить канонический URL или удалить дублирующий шаблон. Для этого полезны инструменты вроде Clearfy Pro, если нужен именно набор SEO- и cleanup-настроек, а не точечный код.
Диагностика: почему страница всё ещё в индексе
Перед правкой проверьте, что именно сейчас происходит с URL. Частая ошибка — закрыть страницу в robots.txt и ждать, что она исчезнет из поиска. Если URL уже известен поисковику, запрет на обход не всегда убирает его из индекса быстро; иногда страница остаётся в выдаче без сниппета.
Проверьте три вещи:
- есть ли у страницы метатег
noindex; - не блокируется ли она в
robots.txtраньше, чем поисковик увидитnoindex; - не стоит ли на ней каноникал на другой URL.
Для проверки откройте исходный код страницы и найдите строки вида <meta name="robots" content="noindex, nofollow"> или <meta name="robots" content="index, follow">. Если метатега нет, значит решение нужно добавлять на уровне темы, плагина SEO или кода.
Что использовать: robots.txt, meta robots или canonical
| Подход | Когда применять | Плюс | Минус |
|---|---|---|---|
meta robots noindex | Страница должна открываться, но не индексироваться | Поисковик видит запрет на индексацию | Страницу всё равно нужно обойти |
robots.txt | Нужно запретить обход технических URL | Снижает лишнюю нагрузку | Не гарантирует удаление уже известного URL из индекса |
rel="canonical" | Есть дубль, который должен указывать на основной URL | Склеивает сигналы | Не подходит для полного запрета индексации |
Если задача именно «не показывать в поиске», начинайте с noindex. Если задача «не тратить crawl budget на мусорные URL», добавляйте robots.txt. Для дублей лучше сочетать каноникал и корректную внутреннюю перелинковку.
Пошаговое решение через код
Ниже пример, который добавляет noindex, nofollow на конкретные типы страниц: результаты поиска, архивы автора и архивы по дате. Код можно положить в functions.php дочерней темы или в небольшой mu-plugin.
<?php
add_action('wp_head', function () {
if (is_search() || is_author() || is_date()) {
echo '<meta name="robots" content="noindex, nofollow">' . "\n";
}
}, 1);Этот вариант простой, но у него есть ограничение: если SEO-плагин уже выводит свой robots-tag, можно получить конфликт или дублирование тегов. Поэтому на реальном сайте лучше сначала проверить, не делает ли это уже Yoast SEO, Rank Math или другой SEO-плагин.
Более аккуратный вариант через фильтр
Если у вас есть SEO-плагин, предпочтительнее работать через его API. Но если нужен именно код без привязки к конкретному плагину, можно управлять robots-tag через WordPress-фильтр wp_robots:
<?php
add_filter('wp_robots', function (array $robots) {
if (is_search() || is_author() || is_date()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Плюс этого способа в том, что он использует штатный механизм WordPress и обычно не конфликтует с генерацией head так грубо, как прямой echo в wp_head.
Как закрыть технические URL в robots.txt
Если нужно запретить обход служебных путей, добавьте правила в robots.txt. Для WordPress это можно сделать через виртуальный robots.txt или через физический файл в корне сайта, если он у вас управляется вручную.
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpЗдесь важно не переборщить. Закрывать /wp-admin/ нормально, но admin-ajax.php обычно нужно оставить доступным, иначе часть фронтенд-функций может сломаться. А вот запрет на ?s= полезен не всегда: если поисковые результаты уже индексируются, одного robots.txt может быть недостаточно.
Когда robots.txt не помогает
- URL уже в индексе, и вы хотите его убрать;
- страница должна быть доступна для обхода, но не для индексации;
- нужно закрыть только часть параметров, а не весь путь;
- поисковик должен увидеть каноникал или noindex на самой странице.
Проверка результата после внедрения
После изменения не ограничивайтесь просмотром кода страницы. Проверьте результат в браузере и в инструментах для вебмастеров.
- Откройте страницу и убедитесь, что в
<head>появился нужныйmeta robots. - Проверьте, что
robots.txtотдаёт актуальные правила без 404 и без лишних директив. - Если используете Google Search Console, отправьте URL на повторную проверку после обновления.
- Убедитесь, что нужные страницы не закрыты случайно, особенно записи и рубрики.
Быстрая локальная проверка через терминал может выглядеть так:
curl -I https://example.com/
curl -s https://example.com/ | grep -i robots
curl -s https://example.com/robots.txtЕсли в ответе страницы есть нужный robots-tag, а robots.txt отдается корректно, значит базовая настройка работает. Дальше уже вопрос индексации и переобхода поисковиком.
Частые ошибки и как их исправить
Закрыли страницу в robots.txt, но не поставили noindex
Это самая частая ошибка. Поисковик может перестать обходить страницу, но URL останется в индексе как известный адрес. Если цель — убрать страницу из выдачи, сначала ставьте noindex, а robots.txt используйте как дополнительную меру.
Используют noindex на странице, но одновременно блокируют её в robots.txt
Так делать можно только если вы понимаете последствия. Если робот не может зайти на страницу, он может не увидеть noindex. В результате URL останется в индексе дольше, чем ожидалось.
Закрывают всё подряд, включая полезные архивы
Например, закрывают рубрики, теги и пагинацию без анализа. Это может убрать из поиска страницы, которые реально приводят трафик. Сначала проверьте логику сайта: если архивы помогают навигации и имеют уникальные описания, их не стоит закрывать автоматически.
Дублируют robots-tag из темы и SEO-плагина
Если тема уже выводит метатеги, а вы добавили ещё один блок через wp_head, в коде может появиться несколько robots-меток. Поисковики обычно ориентируются на итоговую логику, но такой мусор лучше не оставлять. Уберите один источник генерации.
Практические советы по безопасности и производительности
Закрытие от индексации не должно превращаться в хаотичную правку шаблонов. Если на сайте много служебных страниц, лучше централизовать правила: либо через SEO-плагин, либо через один небольшой mu-plugin. Так проще сопровождать изменения после обновления темы.
Если у вас часто появляются дубли из-за параметров, фильтров или архивов, сначала проверьте, нельзя ли убрать источник на уровне шаблона или настроек. Это обычно надёжнее, чем бесконечно закрывать новые URL в robots.txt.
Для сайтов, где нужна регулярная чистка дублей, архивов и служебных страниц, удобно использовать Clearfy Pro как набор точечных SEO- и cleanup-настроек: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно понимать, какие именно URL вы закрываете и почему.
Что проверить после публикации изменений
- страница открывается для пользователя и не отдаёт 404;
- в исходном коде есть нужный
noindexилиcanonical; robots.txtне блокирует важные ресурсы;- внутренние ссылки не ведут массово на закрытые URL;
- в Search Console нет резкого роста ошибок обхода после правки.
Если после правки страница всё ещё попадает в поиск, не спешите менять сразу несколько механизмов. Сначала проверьте, какой именно сигнал видит робот: запрет в robots.txt, метатег noindex, каноникал или редирект. В технической SEO-настройке WordPress это важнее, чем сам факт «закрыли/не закрыли».