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