Ситуация типовая: в robots.txt WordPress автоматически добавляет строку с XML Sitemap, а вы хотите управлять картой сайта вручную. Это бывает после миграции на SEO-плагин, при кастомной генерации sitemap, в мультисайтах и на проектах, где robots.txt собирается сервером или отдельным плагином. Сам файл sitemap при этом может быть нужен — убрать нужно именно его упоминание из robots.txt.
Когда это действительно проблема
Сам по себе блок Sitemap: https://site.ru/sitemap_index.xml не вреден. Проблема начинается, если:
- в
robots.txtуказывается не тот адрес sitemap после переезда сайта; - у вас несколько sitemap, и поисковик получает лишнюю или устаревшую ссылку;
- robots.txt генерируется плагином, а XML Sitemap уже отдает SEO-плагин;
- нужно скрыть служебную карту сайта, которая не должна светиться в публичном robots.txt;
- сервер отдает статический
robots.txt, а WordPress добавляет в него лишнюю динамику через фильтр.
Диагностика: кто именно добавляет sitemap в robots.txt
Прежде чем что-то отключать, проверьте источник. В WordPress строка с sitemap обычно появляется не в самом файле на диске, а на лету через фильтр robots_txt или через SEO-плагин.
Что проверить вручную
- Откройте
/robots.txtв браузере и посмотрите, есть ли там строкаSitemap:. - Проверьте, существует ли физический файл
robots.txtв корне сайта. - Временно отключите SEO-плагины и сравните вывод.
- Если используется кэш страницы или CDN, очистите кэш и посмотрите актуальный ответ сервера.
Если строка исчезает после отключения плагина, значит источник найден. Если нет — ищите кастомный код в теме, mu-plugins или в отдельном плагине.
Рабочие способы отключить sitemap из robots.txt
Выбор зависит от того, как у вас устроен сайт. Ниже — три нормальных варианта без выдуманных хуков и без магии.
| Способ | Когда подходит | Минус |
|---|---|---|
| Настройки SEO-плагина | Если sitemap добавляет Yoast, Rank Math или другой SEO-плагин | Нужно искать опцию в интерфейсе, она не всегда называется одинаково |
Фильтр robots_txt | Если нужен точечный контроль через код | Нужно следить, чтобы не сломать формат robots.txt |
| Статический robots.txt | Если файл отдает сервер или CDN | WordPress уже не управляет содержимым автоматически |
1. Отключить через код в теме или мини-плагине
Если sitemap добавляется через WordPress-фильтр, его можно отредактировать на уровне вывода robots.txt. Самый безопасный путь — не переписывать весь файл, а убрать только строку с sitemap.
<?php
add_filter( 'robots_txt', function( $output, $public ) {
$lines = preg_split( '/\r?\n/', $output );
$lines = array_filter( $lines, function( $line ) {
return stripos( $line, 'Sitemap:' ) !== 0;
} );
return implode( "\n", $lines ) . "\n";
}, 20, 2 );Этот вариант полезен, если вы не хотите зависеть от конкретного SEO-плагина. Но есть нюанс: если в robots.txt несколько sitemap, вы уберете все строки Sitemap:. Это нормально, если вам нужен полностью ручной контроль.
2. Если sitemap добавляет SEO-плагин
У многих SEO-плагинов есть отдельная настройка для sitemap или robots.txt. Названия пунктов отличаются, поэтому ориентируйтесь не на статью, а на интерфейс плагина:
- проверьте разделы SEO, Sitemap, XML Sitemap, Robots.txt;
- ищите переключатель показа sitemap в robots.txt;
- после изменения очистите кэш плагина и кэш страницы.
Если в плагине нет явной опции, тогда лучше не пытаться править его внутренние функции. Проще и надежнее использовать фильтр robots_txt или статический файл.
3. Сделать статический robots.txt
Если сервер отдает физический robots.txt, WordPress не должен подмешивать туда динамический вывод. В этом случае создайте или отредактируйте файл в корне сайта и явно задайте нужное содержимое.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpТакой файл не будет автоматически дополняться sitemap. Но если вам все же нужна карта сайта, добавьте только нужную строку вручную:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/sitemap_index.xmlПошаговое решение без лишнего риска
- Определите, откуда приходит строка
Sitemap:— из плагина, темы или статического файла. - Сделайте резервную копию текущего
robots.txtи, если есть, конфигурации SEO-плагина. - Если нужен быстрый и обратимый способ, используйте фильтр
robots_txt. - Если сайт управляется сервером или CDN, правьте именно физический файл, а не WordPress-логику.
- Очистите кэш сайта, объектный кэш и CDN.
- Проверьте ответ
/robots.txtв браузере и черезcurl.
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по фактическому ответу сервера.
curl -s https://example.com/robots.txtВ ответе не должно быть строки Sitemap:, если вы убирали именно ее. Если строка осталась, значит:
- вы правили не тот источник;
- страницу отдает кэш;
- SEO-плагин снова подмешивает sitemap после вашего кода;
- на сервере есть отдельная конфигурация, которая перекрывает WordPress.
Дополнительно откройте https://example.com/robots.txt в режиме инкогнито и сравните с выводом curl. Если данные отличаются, проблема почти наверняка в кэше или CDN.
Частые ошибки и как их исправить
Удалили весь robots.txt вместо одной строки
Такое часто случается, когда пытаются заменить динамический вывод статическим файлом без проверки. В итоге пропадают важные директивы Disallow и Allow. Исправление простое: верните базовые правила и уберите только ненужную строку sitemap.
Отключили sitemap в плагине, но он все равно виден
Значит, sitemap добавляет не сам плагин, а другой слой: тема, mu-plugin, серверный файл или кэш. Ищите по проекту строку Sitemap: и проверяйте все места, где может жить robots.txt.
Сломали формат файла
robots.txt должен оставаться обычным текстом без HTML, BOM и лишних пробелов в начале. Если сервер начал отдавать странный ответ, проверьте кодировку файла и уберите лишние символы до первой строки.
Оставили старый sitemap в кэше
После изменения robots.txt поисковик может еще какое-то время видеть старую версию из кэша CDN или браузера. Это не ошибка WordPress, но на практике выглядит именно так. Очистите кэш на всех уровнях и повторите проверку через curl.
Когда лучше не трогать sitemap в robots.txt
Если у вас обычный сайт без кастомной генерации sitemap, а строка в robots.txt ведет на актуальную карту сайта, удалять ее только ради «чистоты» не нужно. Поисковики нормально используют эту подсказку. Менять поведение стоит тогда, когда есть конкретная причина: дубли, неправильный адрес, конфликт плагинов или ручное управление индексированием.
Что учесть по безопасности и производительности
Сам robots.txt не защищает сайт. Не стоит рассчитывать, что удаление sitemap из него скроет структуру сайта от сканеров. Если задача именно в безопасности, закрывайте служебные разделы на уровне авторизации, правил сервера и прав доступа.
С точки зрения производительности лучше не собирать robots.txt сложной логикой на каждом запросе. Если проект большой и правила редко меняются, статический файл проще и дешевле для сервера. Динамический вывод через фильтр оставляйте для случаев, когда нужна гибкая логика или несколько окружений.
Если вам нужен более широкий набор технических правок для чистки WordPress, в том числе управление дублями, служебными ссылками и SEO-мелочами, посмотрите Clearfy Pro: https://wpshop.ru/plugins/clearfy.