wpgenerate.ru wordpress wpgenerate.ru

Как отключить XML Sitemap из robots.txt в WordPress без поломки индексации

В 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 частично

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

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

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

WordPress

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

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