В WordPress robots.txt часто правят «на глаз»: добавляют Disallow: /wp-admin/, копируют чужой шаблон и надеются, что поисковик сам разберётся. На практике этого мало. Если в индексе уже сидят служебные страницы, параметры фильтров, архивы автора или служебные URL плагинов, нужно не просто «что-то запретить», а понять, какие именно адреса мешают и чем их лучше закрыть: robots.txt, meta robots, canonical или редиректом.
Когда robots.txt действительно нужен
Robots.txt полезен, когда вы хотите ограничить обход, а не удалить страницу из индекса любой ценой. Это важно: если URL уже проиндексирован, один только запрет в robots.txt не всегда уберёт его из выдачи. Поисковик может оставить адрес в индексе без содержимого, если на него ведут ссылки.
Типичные сценарии
- служебные разделы WordPress, которые не должны тратить crawl budget;
- страницы с параметрами сортировки и фильтрации;
- архивы, которые дублируют рубрики или теги;
- внутренние поисковые результаты;
- технические папки плагинов и скриптов, если они не нужны в обходе.
Диагностика: что именно закрывать
Перед правкой robots.txt откройте Search Console и посмотрите, какие URL реально попадают в индекс или в отчёт об обходе. Затем проверьте сайт вручную:
- есть ли в выдаче страницы с параметрами
?sort=,?filter=,?replytocom=; - попадают ли в индекс архивы автора, даты, теги;
- есть ли дубль главной через
/page/2/или служебные пагинации; - не закрыт ли случайно CSS/JS, без которых ломается рендеринг.
Если проблема не в обходе, а в индексации уже существующих страниц, robots.txt — не единственный инструмент. Для таких URL часто нужен noindex или 301-редирект.
Как настроить robots.txt в WordPress пошагово
В WordPress robots.txt можно создать виртуально через админку, но для предсказуемости лучше использовать физический файл в корне сайта. Так проще контролировать содержимое и не зависеть от плагинов, которые могут подменять правила.
Базовый рабочий вариант
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /tag/
Disallow: /author/
Disallow: /feed/
Sitemap: https://example.com/sitemap_index.xml
Это не универсальный шаблон. Например, запрет /tag/ уместен только если теги у вас реально создают мусорные дубли и не несут самостоятельной ценности. Если теги — часть контентной структуры, закрывать их без анализа не стоит.
Если нужно закрыть параметры URL
Для фильтров и сортировок лучше закрывать конкретные шаблоны, а не весь сайт. Пример:
User-agent: *
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?replytocom=
Disallow: /*?utm_
Но помните: robots.txt не удаляет URL из индекса мгновенно. Он лишь ограничивает обход. Если параметр уже индексируется, дополнительно проверьте canonical и наличие noindex на страницах, где это допустимо.
Что лучше: robots.txt, noindex или canonical
| Подход | Когда использовать | Ограничение |
|---|---|---|
| robots.txt | Нужно запретить обход служебных URL | Не гарантирует удаление уже проиндексированных страниц |
| noindex | Страница доступна, но не должна быть в индексе | Поисковик должен иметь возможность её обойти |
| canonical | Есть дубль, который должен ссылаться на основную версию | Это подсказка, а не жёсткий запрет |
Если задача — убрать дубли, robots.txt часто работает хуже, чем canonical и нормализация URL. Если задача — снизить нагрузку на обход, robots.txt подходит лучше.
Пример настройки robots.txt через PHP, если нужен контроль из темы или плагина
Иногда robots.txt генерируют динамически, например, в мультисайте или при нестандартной структуре. Для этого в WordPress есть фильтр robots_txt. Он позволяет добавить правила без ручного редактирования файла.
add_filter('robots_txt', function ($output, $public) {
$lines = [];
$lines[] = 'User-agent: *';
$lines[] = 'Disallow: /wp-admin/';
$lines[] = 'Allow: /wp-admin/admin-ajax.php';
$lines[] = 'Disallow: /search/';
$lines[] = 'Disallow: /author/';
$lines[] = 'Sitemap: ' . home_url('/sitemap_index.xml');
return implode("\n", $lines) . "\n";
}, 10, 2);
Такой подход удобен, если robots.txt должен зависеть от окружения. Но для обычного сайта это лишняя сложность: статический файл проще отлаживать и безопаснее сопровождать.
Проверка результата после внедрения
После правки не ограничивайтесь открытием /robots.txt в браузере. Проверьте несколько уровней:
- Откройте robots.txt напрямую и убедитесь, что правила отдаются без ошибок.
- Проверьте, не закрыли ли вы случайно важные ресурсы: CSS, JS, изображения.
- В Search Console отправьте на повторную проверку ключевые URL, если они уже были в индексе.
- Посмотрите кэш поисковика и отчёт об обходе через несколько дней, а не сразу после правки.
Если сайт использует CDN или серверный кэш, убедитесь, что robots.txt не отдаётся старой версией. Это частая причина, когда в браузере файл уже новый, а боты ещё видят старый ответ из кэша.
Частые ошибки и как их исправить
Закрыли весь сайт одной строкой
Ошибка выглядит так: Disallow: /. Это допустимо только для staging-окружения. На боевом сайте такой файл быстро ломает индексацию и может скрыть контент от поисковиков полностью.
Пытаются удалить страницу из индекса через robots.txt
Если URL уже в выдаче, robots.txt не всегда поможет. Для удаления используйте noindex, 301-редирект или удаление страницы с корректным кодом ответа, в зависимости от сценария.
Закрывают CSS и JS
Некоторые старые шаблоны запрещают папки /wp-content/ или отдельные каталоги со стилями. Это плохая идея: поисковик может не увидеть страницу так, как видит её пользователь, и оценка качества ухудшится.
Используют слишком общий шаблон для параметров
Запрет Disallow: /*? может отрезать слишком много полезных URL, включая нормальные страницы с параметрами. Лучше закрывать конкретные шаблоны, которые вы реально видели в логах или отчётах.
Практические советы по безопасности и производительности
- Не храните robots.txt только в плагине, если плагин критичен для SEO: после отключения правила могут исчезнуть.
- Проверяйте файл после обновления темы и деплоя: некоторые сборки перезаписывают корень сайта.
- Не закрывайте служебные файлы, которые нужны для рендеринга страниц.
- Если у вас много дублей из-за архивов, сначала настройте структуру ссылок и canonical, а уже потом режьте обход robots.txt.
Если нужен более широкий технический аудит дублей и служебных страниц, в экосистеме WPShop есть Clearfy Pro, но его стоит рассматривать как инструмент для контроля настроек, а не как замену пониманию, что именно вы закрываете и зачем.
Мини-чек-лист перед публикацией robots.txt
- Проверил, какие URL реально мешают индексации.
- Не закрыл CSS, JS и изображения.
- Отдельно разобрал уже проиндексированные страницы.
- Добавил sitemap в файл.
- Проверил robots.txt после очистки кэша и деплоя.
- Убедился, что правила не конфликтуют с canonical и noindex.
Если после правки нужные страницы всё ещё не индексируются, ищите причину не только в robots.txt: проверьте мета-теги, каноникал, статус-коды, внутренние ссылки и серверные ограничения доступа. В WordPress техническая SEO-ошибка редко живёт в одном месте.