wpgenerate.ru wordpress wpgenerate.ru

Как отключить отображение XML Sitemap в robots.txt в WordPress

Ситуация типовая: в 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Если файл отдает сервер или CDNWordPress уже не управляет содержимым автоматически

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

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

  1. Определите, откуда приходит строка Sitemap: — из плагина, темы или статического файла.
  2. Сделайте резервную копию текущего robots.txt и, если есть, конфигурации SEO-плагина.
  3. Если нужен быстрый и обратимый способ, используйте фильтр robots_txt.
  4. Если сайт управляется сервером или CDN, правьте именно физический файл, а не WordPress-логику.
  5. Очистите кэш сайта, объектный кэш и CDN.
  6. Проверьте ответ /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.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше