Как настроить robots.txt в WordPress для закрытия дублей и служебных страниц

В WordPress robots.txt часто правят «на глаз»: закрывают всё подряд, а потом удивляются, почему в индексе остаются дубли, а важные страницы выпадают из обхода. На практике задача обычно проще: убрать из сканирования служебные URL, не сломать доступ к CSS/JS и не пытаться лечить robots.txt то, что решается canonical, noindex или настройками плагина SEO.

Если у сайта уже есть проблемы с дублями, сначала нужно понять, что именно вы хотите закрыть: архивы автора, страницы поиска, служебные параметры, feed, wp-admin, staging-домен или отдельные разделы. robots.txt не удаляет URL из индекса сам по себе — он только ограничивает обход. Это важная граница, из-за которой многие настройки выглядят «рабочими» только на бумаге.

Какие задачи robots.txt реально решает в WordPress

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

Что обычно закрывают

  • /wp-admin/ — кроме /wp-admin/admin-ajax.php, если он нужен фронтенду;
  • /wp-includes/ — редко нужен в обходе;
  • служебные параметры поиска и фильтров, если они создают мусорные URL;
  • feed-ленты, если они не нужны для SEO и подписок;
  • внутренние тестовые или staging-разделы.

При этом не стоит закрывать в robots.txt CSS, JS, изображения и публичные страницы, которые должны индексироваться. Если поисковый робот не может загрузить ресурсы, он хуже видит верстку и может некорректно оценивать страницу.

Диагностика проблемы: что именно ломает индексацию

Перед правкой robots.txt проверьте, есть ли у вас вообще проблема с обходом, а не с дублированием контента. Откройте в браузере /robots.txt и посмотрите, не добавляет ли его тема, SEO-плагин или серверный конфиг. В WordPress файл может быть виртуальным, и правка физического файла на сервере не всегда влияет на ответ сайта.

Дальше проверьте несколько вещей:

  • есть ли в Google Search Console сообщения о блокировке ресурсов или страниц;
  • какие URL реально попадают в индекс: архивы, поиск, параметры, теги;
  • не закрыты ли случайно важные разделы, например /wp-content/uploads/ или публичные страницы;
  • не конфликтует ли robots.txt с noindex и canonical.

Если дубли появляются из-за тегов, категорий, пагинации или параметров фильтра, robots.txt может помочь только частично. Для таких случаев часто лучше использовать настройки SEO-плагина или точечный noindex.

Пошаговая настройка robots.txt без лишних рисков

Ниже — рабочий базовый вариант для обычного WordPress-сайта. Он не пытается «оптимизировать всё», а закрывает только служебные зоны и оставляет поисковикам доступ к публичным ресурсам.

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-login.php
Disallow: /?s=
Disallow: /search/
Disallow: /feed/
Disallow: /comments/feed/

Sitemap: https://example.com/sitemap_index.xml

Этот шаблон нужно адаптировать под сайт. Например, если поиск на сайте важен для пользователей и не создает индексируемых дублей, строку Disallow: /?s= можно убрать. Если у вас другой путь к карте сайта, укажите фактический URL из SEO-плагина.

Как добавить robots.txt через код, если нужен контроль из темы или плагина

Если вы не хотите редактировать файл вручную, можно сформировать содержимое через фильтр 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: /wp-login.php';
    $lines[] = 'Disallow: /?s=';
    $lines[] = 'Sitemap: ' . home_url('/sitemap_index.xml');

    return implode("\n", $lines) . "\n";
}, 10, 2);

Такой вариант стоит использовать только если вы понимаете, что именно формирует robots.txt на сайте. Если SEO-плагин тоже управляет этим файлом, можно получить конфликт или неожиданный результат. В этом случае лучше оставить один источник истины.

Сравнение подходов: файл, SEO-плагин или код

ПодходКогда подходитМинус
Физический robots.txtПростой сайт, ручной контрольЛегко забыть про изменения после миграции
SEO-плагинНужно управлять robots.txt из админкиЧасть настроек может быть скрыта за интерфейсом
Код через robots_txtНужна автоматизация и одинаковое поведение на окруженияхКонфликтует с плагинами, если не проверить приоритет

Если сайт ведется командой, удобнее держать правила в SEO-плагине или в репозитории, а не править вручную на продакшене. Для типовых задач вроде удаления дублей и служебных страниц часто хватает настроек в плагине, например в Clearfy Pro, если он уже используется на проекте. Но сам принцип проверки остается тем же: смотрим фактический ответ /robots.txt, а не интерфейс в админке.

Как проверить, что настройка сработала

После изменений не ограничивайтесь открытием файла в браузере. Проверьте результат в нескольких местах, потому что robots.txt влияет на обход, а не на все сигналы сразу.

  • Откройте https://site.ru/robots.txt и убедитесь, что там именно нужные директивы.
  • Проверьте, не отдает ли сервер старую версию через CDN или кеш.
  • В Google Search Console используйте проверку URL для страниц, которые должны быть доступны.
  • Посмотрите, не появились ли ошибки сканирования ресурсов после закрытия каталогов.
  • Убедитесь, что sitemap доступен и не закрыт случайно.

Если вы закрыли поиск или параметры, проверьте несколько реальных URL с этими шаблонами. Например, /?s=test или URL с фильтром, если он есть на сайте. Важно убедиться, что поисковик не получает противоречивые сигналы: robots.txt запрещает обход, а canonical или sitemap при этом продолжают указывать на тот же URL как на значимый.

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

Закрывают весь сайт одной строкой

Самая грубая ошибка — Disallow: /. После этого поисковики перестают нормально обходить сайт, а исправление может занять время. Если это уже случилось, сначала уберите запрет, затем проверьте доступность sitemap и запросите переобход важных страниц.

Пытаются убрать страницы из индекса только через robots.txt

Если URL уже в индексе, robots.txt не всегда решает проблему. Для удаления дублей обычно нужен noindex, корректный canonical или редирект. robots.txt здесь — вспомогательный инструмент, а не универсальная кнопка «удалить из поиска».

Закрывают CSS и JS

Это часто ломает рендеринг страниц в поисковых системах. Не закрывайте каталоги с ресурсами, если они нужны для отображения публичных страниц. Исключение — только если вы точно понимаете, что файлы не участвуют в рендере и не используются фронтендом.

Забывают про кеш и CDN

После правки robots.txt старый ответ может продолжать отдаваться из кеша. Очистите серверный кеш, кеш плагина и CDN, если он есть. Иначе вы будете проверять уже не ту версию файла.

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

robots.txt не защищает админку и не скрывает чувствительные данные. Если нужно ограничить доступ к /wp-admin/ или /wp-login.php, используйте нормальные меры безопасности: сложные пароли, ограничение попыток входа, двухфакторную аутентификацию, при необходимости — серверные правила доступа.

Для производительности полезно не только закрыть служебные URL, но и убрать источники дублей на уровне структуры сайта: лишние архивы, пустые теги, страницы поиска, параметры сортировки и фильтров. Если сайт большой, это обычно дает больше пользы, чем попытка «дожать» robots.txt до идеала.

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

Как удалить или изменить URL страницы в WordPress без перенаправления
19.01.2026
Как отключить покупку для отдельных товаров в WooCommerce без удаления карточки
10.08.2026
Как использовать REST API для автоматизации задач в WordPress
12.04.2026
Как настроить использование Transient API в WordPress для эффективного кэширования
26.03.2026
Как создать собственный тип записи (Custom Post Type) в WordPress с примерами кода
10.03.2026