WordPress Notes Wordpresses

Как закрыть от индексации файлы XML Sitemap и отладить ошибки в robots.txt в WordPress

Ситуация типовая: сайт уже работает, карта сайта есть, robots.txt тоже есть, но в индексе появляются служебные URL, а в Search Console всплывают странные предупреждения про запреты и доступность страниц. Чаще всего проблема не в «плохом SEO», а в том, что robots.txt и XML Sitemap настроены без проверки фактического поведения WordPress и плагинов.

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

Когда проблема действительно в robots.txt и sitemap

Сначала стоит отделить техническую ошибку от обычной задержки индексации. Если в поиске всплывают URL вида /wp-json/, /feed/, /page/2/ или служебные страницы плагинов, это уже повод смотреть правила доступа и карту сайта. Если же в индексе просто остались старые адреса, а в выдаче они постепенно исчезают, вмешательство может и не понадобиться.

Что проверить в первую очередь

  • Открывается ли /robots.txt без редиректов и 404.
  • Нет ли в robots.txt запрета на саму XML-карту сайта.
  • Не генерирует ли SEO-плагин отдельный sitemap, который конфликтует с картой от WordPress.
  • Не закрыты ли случайно важные разделы, например /wp-content/uploads/, если там лежат изображения, которые должны индексироваться.
  • Нет ли в Search Console ошибок сканирования из-за блокировки CSS, JS или самой sitemap.

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

Как должна выглядеть рабочая схема

Задача простая: не мешать поисковику обходить нужные страницы и одновременно не отдавать ему мусорные или служебные URL. Для этого обычно достаточно двух вещей: корректного robots.txt и понятной логики генерации sitemap.

Вариант 1: править robots.txt через WordPress-фильтр

Если нужен предсказуемый результат, лучше не редактировать физический файл на сервере вручную, а формировать его через фильтр robots_txt. Тогда WordPress будет отдавать актуальный вариант, а вы сможете контролировать правила из темы или небольшого mu-plugin.

<?php
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: /feed/';
    $lines[] = 'Sitemap: ' . home_url('/sitemap_index.xml');

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

Этот пример подходит только если у вас действительно используется sitemap по адресу /sitemap_index.xml. Если карта сайта генерируется иначе, подставьте реальный URL. Важно не писать в robots.txt то, чего на сайте нет.

Вариант 2: закрыть служебные страницы от индексации через meta robots

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

<?php
add_action('wp_head', function () {
    if (is_search() || is_feed()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

Такой подход не заменяет robots.txt, а дополняет его. Если страница уже попала в индекс, noindex обычно работает надёжнее, чем простой запрет в robots.txt, потому что поисковик видит директиву при обходе страницы.

Диагностика: где именно ломается индексация

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

Проверка через браузер и curl

Откройте в браузере /robots.txt и /sitemap_index.xml. Если видите 404, редирект на главную или HTML вместо текста/XML, проблема не в SEO, а в маршрутизации, кэше или серверной конфигурации.

curl -I https://example.com/robots.txt
curl -I https://example.com/sitemap_index.xml
curl https://example.com/robots.txt

В ответе на robots.txt должен быть статус 200 OK и корректный текстовый контент. Для sitemap — XML и тоже 200 OK. Если там 403 или 404, поисковик не сможет нормально использовать эти файлы.

Проверка конфликтов с плагинами

Если установлен SEO-плагин, сначала посмотрите его настройки sitemap и robots. Частая ошибка — одновременно включить карту сайта в WordPress и в плагине, а потом пытаться понять, почему в индексе два разных источника URL. Второй типичный конфликт — кэширование robots.txt на уровне CDN или плагина кеша.

ПодходПлюсыМинусы
Редактировать robots.txt вручнуюБыстроЛегко потерять изменения после деплоя или правки плагином
Генерировать через фильтр robots_txtПредсказуемо, можно версионироватьНужен небольшой код
Использовать SEO-плагинУдобно для редакторовВозможны конфликты с темой и другими плагинами

Пошаговое решение без лишнего риска

  1. Снимите текущую версию robots.txt и sitemap, чтобы было с чем сравнить.
  2. Проверьте, не дублируется ли sitemap в WordPress и SEO-плагине.
  3. Определите, что нужно именно закрыть от индексации, а что только убрать из обхода.
  4. Добавьте правила через фильтр или настройки плагина, а не в нескольких местах сразу.
  5. Очистите кэш сайта, CDN и браузера.
  6. Проверьте ответы сервером через curl и валидатор в Search Console.

Если у вас много служебных URL, удобнее сначала собрать их список и закрывать точечно. Не стоит бездумно писать в robots.txt всё подряд, особенно если сайт активно использует AJAX, REST API или медиафайлы.

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

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

  • Откройте /robots.txt в режиме инкогнито и убедитесь, что там нет старой версии из кэша.
  • Проверьте /sitemap_index.xml и вложенные карты сайта на статус 200.
  • В Search Console отправьте robots.txt на повторную проверку, если он был изменён существенно.
  • Проверьте, что закрытые страницы действительно отдают noindex или недоступны для обхода, если это было целью.
  • Посмотрите логи сервера или отчёты сканирования, если бот продолжает ходить на запрещённые URL.

Если после правки в индексе всё ещё видны старые адреса, это не всегда ошибка. Поисковику нужно время, чтобы переобойти страницы и обновить состояние. Но если в Search Console продолжают появляться новые URL, значит правило либо не применяется, либо конфликтует с другим источником.

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

Закрыли sitemap в robots.txt

Это одна из самых неприятных ошибок. Если карта сайта запрещена для обхода, поисковик может не увидеть обновления структуры сайта. Sitemap должен быть доступен, а не спрятан.

Смешали noindex и Disallow без понимания разницы

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

Оставили старый robots.txt в кэше

Если сайт за CDN или кэш-плагином, обновление файла может не попасть наружу сразу. После правки обязательно очистите кэш на всех уровнях: WordPress, сервер, CDN.

Поставили два источника sitemap одновременно

Когда WordPress и SEO-плагин оба генерируют карту сайта, поисковик может получать разные наборы URL. Оставьте один источник и отключите второй.

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

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

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

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

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

×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙