В WordPress строка с XML Sitemap в robots.txt обычно появляется автоматически, если сайт использует встроенную карту сайта. Сам по себе этот блок не вреден, но на практике он мешает в двух сценариях: когда у вас своя карта сайта, и когда вы не хотите светить лишние служебные URL в публичном robots.txt.
Проблема не в индексации как таковой, а в контроле. Если поисковик видит несколько карт сайта или получает не тот URL, который вы реально поддерживаете, дальше начинаются лишние проверки, путаница в логах и вопросы к техподдержке: почему в robots.txt указан sitemap, которого нет, или почему там осталась старая ссылка после миграции.
Когда строку Sitemap в robots.txt действительно стоит убрать
Сначала стоит понять, это косметика или реальная техническая задача. Убирать ссылку имеет смысл, если:
- вы отключили встроенный XML Sitemap и используете карту сайта от SEO-плагина;
- у вас кастомная генерация sitemap, и старый URL уже неактуален;
- на сайте несколько окружений, и в публичный
robots.txtпопадает не тот адрес; - вы хотите оставить
robots.txtминимальным и управлять картой сайта через XML Sitemap Index или Search Console.
Если же у вас стандартный WordPress без дополнительных SEO-решений, строка с sitemap обычно полезна: она помогает поисковым роботам быстрее находить карту сайта. В таком случае удалять её только ради «чистоты» не стоит.
Диагностика: откуда именно берётся sitemap в robots.txt
Перед правкой проверьте, кто формирует robots.txt. В WordPress это может быть:
- встроенный генератор WordPress;
- SEO-плагин, который подменяет вывод;
- файл
robots.txtв корне сайта, если он физически существует; - кастомный код в теме или плагине.
Откройте https://ваш-домен/robots.txt и посмотрите, есть ли там строка вида Sitemap: https://site.ru/wp-sitemap.xml или ссылка на sitemap от плагина. Если файл отдается не WordPress-ом, а статическим файлом с диска, фильтр в коде не поможет — нужно править сам файл или логику генерации.
Ещё один быстрый тест: временно отключите SEO-плагин на staging-окружении и снова откройте robots.txt. Если строка исчезла, значит её добавлял плагин, а не ядро.
Как отключить вывод XML Sitemap в robots.txt через код
Если sitemap добавляет именно WordPress, самый прямой способ — использовать фильтр robots_txt. Он позволяет изменить текст, который WordPress отдаёт для robots.txt.
Ниже пример, который удаляет строку с wp-sitemap.xml, но оставляет остальной файл без изменений:
add_filter( 'robots_txt', function( $output, $public ) {
$lines = preg_split( '/\r\n|\r|\n/', $output );
$lines = array_filter( $lines, function( $line ) {
return stripos( $line, 'wp-sitemap.xml' ) === false;
} );
return implode( "\n", $lines );
}, 10, 2 );Код можно добавить в functions.php дочерней темы, но на практике безопаснее вынести его в небольшой mu-plugin, чтобы он не зависел от смены темы.
Пример минимального mu-plugin:
<?php
/**
* Plugin Name: Remove sitemap from robots.txt
*/
add_filter( 'robots_txt', function( $output, $public ) {
$lines = preg_split( '/\r\n|\r|\n/', $output );
$lines = array_filter( $lines, function( $line ) {
return stripos( $line, 'wp-sitemap.xml' ) === false;
} );
return implode( "\n", $lines );
}, 10, 2 );Если у вас sitemap от SEO-плагина, строка в robots.txt может называться иначе. Тогда условие в stripos() нужно подстроить под фактический URL.
Если нужно убрать не только строку, но и сам sitemap WordPress
Иногда задача шире: вы хотите не просто скрыть ссылку, а полностью отключить встроенную карту сайта WordPress. Тогда используйте фильтр wp_sitemaps_enabled:
add_filter( 'wp_sitemaps_enabled', '__return_false' );Это уже другой сценарий. После такого отключения WordPress перестанет генерировать встроенный sitemap, и его ссылка тоже исчезнет из robots.txt. Но если у вас нет альтернативной карты сайта, поисковикам станет хуже, а не лучше.
Если sitemap добавляет плагин: что делать вместо правки ядра
Когда строку выводит SEO-плагин, не стоит бороться с ним через общий фильтр, если у плагина есть собственные настройки. Сначала проверьте:
- есть ли в настройках SEO-плагина переключатель sitemap;
- можно ли отключить вывод карты сайта в
robots.txtотдельно; - не дублируется ли sitemap в нескольких местах.
Если плагин не даёт нужной настройки, тогда уже имеет смысл использовать фильтр robots_txt или править конфигурацию плагина на уровне его хуков. Но сначала лучше понять источник строки, иначе можно убрать не ту карту сайта и сломать индексацию.
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройка в SEO-плагине | Если плагин умеет управлять sitemap | Зависит от конкретного плагина |
Фильтр robots_txt | Если нужно убрать только строку | Нужно поддерживать код |
wp_sitemaps_enabled | Если встроенный sitemap не нужен вообще | Нельзя оставить WordPress sitemap частично |
Пошаговое решение без лишнего риска
- Откройте текущий
robots.txtи зафиксируйте, какая именно строка sitemap там есть. - Проверьте, генерируется ли файл WordPress-ом или отдается статически.
- Если sitemap нужен, но ссылка лишняя, добавьте фильтр
robots_txt. - Если встроенный sitemap не нужен, отключите его через
wp_sitemaps_enabled. - После правки очистите кэш страницы и серверный кэш, если он есть.
- Проверьте результат в браузере и в Search Console.
Как проверить, что решение сработало
Проверка должна быть не на глаз, а по факту ответа сервера. Смотрите на три вещи:
https://ваш-домен/robots.txtбольше не содержит старую строку sitemap;- если sitemap должен остаться, он доступен по новому URL и отдаёт
200 OK; - в Search Console нет ошибок по недоступной карте сайта или старому адресу.
Если у вас есть доступ к консоли, можно быстро проверить заголовки:
curl -I https://example.com/robots.txtИ сам файл:
curl https://example.com/robots.txtПосле этого убедитесь, что кэш не подсовывает старую версию. На сайтах с page cache иногда видна старая строка даже после правки кода, пока не очищен кэш на уровне плагина, сервера или CDN.
Частые ошибки и как их исправить
Правят не тот robots.txt
Если в корне сайта лежит физический файл robots.txt, WordPress может вообще не участвовать в его формировании. В этом случае фильтр robots_txt не даст эффекта. Решение простое: проверьте, существует ли файл на сервере, и редактируйте именно его.
Удаляют sitemap, но не ставят замену
Это типичная ошибка после отключения встроенной карты сайта. Если у вас больше нет sitemap, поисковикам сложнее находить новые URL. Перед отключением убедитесь, что у вас есть рабочая альтернатива: sitemap от SEO-плагина или собственная карта сайта.
Не чистят кэш
На кэшируемых сайтах robots.txt часто тоже попадает под кэш. После изменения кода нужно очистить кэш плагина, серверный кэш и, если используется CDN, его тоже.
Скрывают sitemap, но оставляют старые ссылки в Search Console
Если карта сайта менялась после миграции, старый URL может ещё висеть в Search Console как отправленный ранее. Это не всегда ошибка кода. Иногда нужно вручную удалить старую карту сайта из интерфейса и отправить новую.
Практические советы по безопасности и производительности
Не храните подобные правки в functions.php активной темы, если сайт живёт долго и тема может меняться. Для технических правок лучше использовать mu-plugin или отдельный маленький плагин. Так вы не потеряете настройку после обновления темы.
Если на сайте много SEO- и технических доработок, имеет смысл держать их в одном небольшом служебном плагине: отключение лишних строк в robots.txt, правки sitemap, редиректы, служебные фильтры. Это проще сопровождать, чем разбрасывать код по теме.
Для сайтов, где нужен более широкий контроль над дублями, sitemap и служебными настройками, иногда удобнее использовать специализированные инструменты вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае сначала проверьте, что именно меняется в robots.txt, а не отключайте всё подряд.
Если вам нужно не просто убрать строку, а выстроить нормальную техническую схему индексации, логика должна быть такой: один sitemap, понятный источник, проверяемый результат, минимум ручных исключений.