Как отключить XML-карту сайта в robots.txt в WordPress и не сломать индексацию

В WordPress часто путают две разные вещи: саму XML-карту сайта и строку с адресом sitemap в robots.txt. На практике проблема обычно не в карте как таковой, а в том, что в файле для поисковых роботов появляется ссылка на sitemap, которую нужно убрать из публичного доступа или заменить на другой источник. Это бывает после миграции, при использовании SEO-плагина, на тестовом сайте или когда sitemap отдает лишние URL.

Если задача именно в robots.txt, а не в полном отключении sitemap, решение должно быть точечным. Иначе легко сломать индексацию, особенно если поисковики уже используют эту карту как основной источник новых страниц.

Когда это нужно и что именно вы отключаете

WordPress сам по себе с версии 5.5 умеет отдавать базовую XML-карту сайта. Плагины SEO часто добавляют свою карту и могут прописывать ее адрес в robots.txt. В результате в файле появляется строка вида Sitemap: https://example.com/wp-sitemap.xml или адрес от SEO-плагина.

Отключать эту строку имеет смысл, если:

  • вы переносите сайт и временно не хотите светить sitemap старого окружения;
  • у вас несколько карт, и в robots.txt должен остаться только один актуальный адрес;
  • нужно скрыть sitemap для служебных разделов, но не отключать саму карту полностью;
  • SEO-плагин уже управляет картой, а WordPress-добавка создает дубль.

Если же вы хотите убрать саму карту из сайта, это отдельная задача. Здесь речь именно о записи в robots.txt.

Диагностика: где именно появляется sitemap

Сначала проверьте, кто добавляет строку в robots. Это можно сделать без правок кода.

  1. Откройте /robots.txt в браузере.
  2. Посмотрите, есть ли там строка Sitemap: и какой у нее адрес.
  3. Сравните адрес с настройками SEO-плагина и с адресом стандартной карты WordPress.
  4. Если robots.txt виртуальный, проверьте, не генерирует ли его плагин безопасности или SEO-плагин.

Полезно также проверить, не отдает ли сервер статический robots.txt из корня сайта. Если файл существует физически, WordPress его уже не подменит, и править нужно именно его.

Что искать в настройках

  • в SEO-плагине — раздел sitemap или XML sitemaps;
  • в плагинах кеша и безопасности — опции для robots.txt;
  • в теме — кастомный код, который фильтрует robots;
  • в корне сайта — реальный файл robots.txt.

Как отключить строку Sitemap в robots.txt кодом

Самый надежный способ — использовать фильтр robots_txt. Он позволяет изменить содержимое виртуального robots.txt до вывода в браузер. Это безопаснее, чем редактировать ядро или надеяться на настройки плагина, которые могут сброситься после обновления.

Добавьте код в functions.php дочерней темы или в небольшой mu-plugin:

add_filter( 'robots_txt', function( $output, $public ) {
	$lines = explode( "\n", $output );
	$lines = array_filter( $lines, function( $line ) {
		return stripos( $line, 'sitemap:' ) !== 0;
	} );

	return implode( "\n", $lines );
}, 10, 2 );

Этот вариант убирает все строки, которые начинаются с Sitemap:. Если у вас в robots несколько карт и нужно удалить только одну, фильтр лучше сделать точнее.

Удалить только одну конкретную карту

Если нужно оставить, например, карту от SEO-плагина, но убрать стандартную WordPress-карту, можно отфильтровать по адресу:

add_filter( 'robots_txt', function( $output ) {
	$remove = home_url( '/wp-sitemap.xml' );
	$lines   = explode( "\n", $output );
	$result  = array();

	foreach ( $lines as $line ) {
		if ( stripos( $line, 'sitemap:' ) === 0 && strpos( $line, $remove ) !== false ) {
			continue;
		}
		$result[] = $line;
	}

	return implode( "\n", $result );
} );

Такой подход удобен, если вы точно знаете, какой адрес должен исчезнуть. Для нескольких окружений лучше не хардкодить домен, а собирать его через home_url().

Если robots.txt статический, править нужно файл, а не фильтр

На некоторых сайтах в корне лежит физический robots.txt. В этом случае WordPress не участвует в генерации, и фильтр robots_txt не сработает. Тогда откройте файл и удалите строку вручную.

Пример типичного содержимого:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.com/wp-sitemap.xml

Если вы удаляете строку с sitemap, не трогайте остальные директивы без необходимости. Ошибка здесь обычно не в самой карте, а в том, что вместе с ней случайно удаляют правила для /wp-admin/ или закрывают лишние разделы.

Сравнение подходов

СпособКогда подходитМинус
Фильтр robots_txtВиртуальный robots.txt, нужен контроль из кодаНе работает при физическом файле
Редактирование файла robots.txtФайл лежит в корне сайтаМожно перезаписать при деплое или обновлении
Настройки SEO-плагинаПлагин сам управляет sitemapНе всегда можно убрать только одну строку

Проверка результата после внедрения

После правки не ограничивайтесь визуальной проверкой в браузере. Нужно убедиться, что robots отдает именно то, что вы ожидаете.

  • Откройте /robots.txt в инкогнито-режиме.
  • Проверьте, что строка Sitemap: исчезла или изменилась.
  • Если используется кеш, очистите его на сайте и на CDN.
  • Проверьте ответ сервера: 200 OK, а не редирект на другую версию домена.
  • Если sitemap убирали временно, убедитесь, что поисковик все еще видит нужные URL через Search Console или аналогичный инструмент.

Для быстрой проверки можно использовать curl:

curl -s https://example.com/robots.txt

Если строка все еще есть, значит, ее добавляет не WordPress-фильтр, а другой источник: статический файл, SEO-плагин или кеш/CDN.

Частые ошибки и как их исправить

Удалили не ту карту

Иногда в robots.txt есть несколько строк Sitemap:. Если убрать все подряд, можно случайно отключить нужную карту для новостей, изображений или кастомных типов записей. Сначала определите, какой адрес реально используется поисковиками, и только потом удаляйте лишнее.

Правили functions.php в родительской теме

После обновления тема может перезаписаться. Для постоянного решения используйте дочернюю тему или mu-plugin. Это особенно важно на продакшене, где такие правки должны переживать обновления.

Оставили кеш старого robots.txt

Если сайт отдает кешированную версию, изменения не видны сразу. Очистите кеш плагина, серверный кеш и CDN. На некоторых конфигурациях robots.txt кешируется отдельно от обычных страниц.

Ожидали, что фильтр сработает на физический файл

Фильтр robots_txt работает только для виртуальной генерации. Если в корне есть реальный файл, WordPress его не подменяет. В этом случае правка должна быть в самом файле или в процессе деплоя.

Практика безопасности и поддержки

Если вы часто меняете sitemap на разных окружениях, не редактируйте robots вручную на боевом сайте. Лучше держать правило в коде или в деплой-скрипте, чтобы не ловить расхождения между staging и production.

Еще один полезный момент: не скрывайте sitemap без причины. Для SEO это не «защита», а просто техническая настройка. Если карта нужна поисковикам, убирайте только лишние дубли, а не весь механизм целиком.

Если вам нужно не только убрать строку из robots.txt, но и почистить сайт от лишних SEO-дублей, удобно использовать инструменты уровня Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpnotes.ru&utm_medium=article&utm_campaign=otklyuchit-xml-sitemap-v-robots-txt-v-wordpress. Но даже в этом случае полезно понимать, что именно меняется в robots и где это хранится.

Если после правки robots.txt поисковики продолжают видеть старую карту, проверьте не только код, но и ответ сервера, кеш и наличие физического файла в корне. В WordPress такие вещи чаще ломаются на стыке плагинов и инфраструктуры, а не в одном конкретном хуке.

Как отключить открытые XML-RPC pingbacks в WordPress без поломки приложений
06.09.2026
Как отключить открытые XML-feeds в WordPress и не сломать индексацию
03.09.2026
Как исключить текущую страницу из цикла WordPress в шаблоне и не сломать вывод записей
31.08.2026
Как закрыть от индексации страницы автора в WordPress без потери полезного трафика
13.09.2026
Как отключить emoji в WordPress и убрать лишние скрипты из head
09.09.2026

Заметки по WP: подробные описания устаноки, гайды по настройке, разработке плагинов и тем.