Что такое sitemap.xml и чего от него ждать
sitemap.xml — это файл со списком адресов сайта, которые вы предлагаете поисковику обойти. Ничего больше: карта сайта не гарантирует индексацию, не поднимает позиции и не заменяет внутренние ссылки.
Реальная польза у неё две. Первая — сообщить об адресах, до которых робот не дойдёт по ссылкам: страницы глубоко в структуре, свежие материалы, разделы после переезда. Вторая — подсказать, что обновилось, чтобы робот пришёл за изменениями раньше.
Чего карта не делает: не открывает доступ к закрытым страницам, не отменяет noindex и не исправляет ошибки структуры. Если страница не связана ссылками с остальным сайтом, карта сайта её проиндексирует, но ранжироваться такая страница почти наверняка не будет — вес по ней не передаётся.
Как выглядит файл
Минимальный рабочий вариант:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site.ru/</loc>
<lastmod>2026-08-22</lastmod>
</url>
<url>
<loc>https://site.ru/uslugi/</loc>
<lastmod>2026-08-14</lastmod>
</url>
</urlset>
Три требования, нарушение которых встречается чаще всего: кодировка UTF-8, адреса абсолютные и в том же протоколе и хосте, что канонический адрес сайта. Карта на https://site.ru, где внутри лежат адреса с http://www.site.ru, — распространённая и дорогая ошибка: поисковик видит в ней указания на другой сайт.
Ограничения и sitemap index
В одном файле не больше 50 000 адресов и не больше 50 МБ в несжатом виде. Файл можно отдавать сжатым, ограничение по размеру считается до сжатия.
Когда сайт перерастает лимит — или когда просто удобнее разделить, — карты бьются на части, а сверху кладётся индексный файл:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://site.ru/sitemap-pages.xml</loc>
<lastmod>2026-08-22</lastmod>
</sitemap>
<sitemap>
<loc>https://site.ru/sitemap-posts.xml</loc>
<lastmod>2026-08-22</lastmod>
</sitemap>
</sitemapindex>
Разбивать полезно и на небольших сайтах: если карты разделены по типам страниц, в Вебмастере видно, какая именно группа индексируется плохо. С одной общей картой на десять тысяч адресов такой информации нет.
Какие теги имеют значение
| Тег | Что означает | Учитывается ли |
|---|---|---|
<loc> |
адрес страницы | да, это единственный обязательный тег |
<lastmod> |
дата последнего изменения | да, если она честная |
<changefreq> |
предполагаемая частота обновления | нет |
<priority> |
относительная важность страницы | нет |
Про changefreq и priority стоит сказать прямо: поисковые системы их не используют. Многие плагины по-прежнему их выводят и позволяют настраивать, что порождает бесконечные обсуждения, какой приоритет ставить главной. Ответ: любой, это ни на что не влияет.
А вот lastmod работает — при одном условии. Дата должна отражать содержательное изменение страницы. Если CMS проставляет сегодняшнее число всем страницам при каждой пересборке, поисковик перестаёт доверять этому полю на всём сайте. Массовое обновление дат ради того, чтобы «расшевелить» робота, не ускоряет обход, а отключает единственный работающий сигнал.
Что не должно попадать в карту
Самый ценный раздел этого материала, потому что здесь ошибаются почти все. В карте сайта должны быть только страницы, которые вы хотите видеть в поиске. То есть отвечающие 200, канонические и открытые к индексации.
Не должно быть:
- страниц с
noindex— вы одновременно приглашаете робота и запрещаете ему индексацию; - редиректов: адрес, отдающий 301, в карте бессмыслен, нужен конечный;
- страниц с 404 и 500;
- неканонических адресов: с параметрами, с
utm, дублей сindex.php; - служебных страниц: результатов поиска по сайту, корзины, личного кабинета, страницы «Спасибо»;
- страниц пагинации, если они закрыты от индексации;
- адресов на других доменах и поддоменах — у каждого своя карта.
Противоречие между картой и robots.txt — самая частая находка технического аудита. Оно не наказывается напрямую, но тратит краулинговый бюджет: робот ходит по адресам, которые вы сами же запретили, вместо тех, что вам нужны.
Как создать sitemap.xml
Три способа по убыванию надёжности.
Средствами CMS. Лучший вариант: карта строится из живых данных и обновляется сама. В WordPress собственная карта есть по умолчанию, а плагины дают её взамен своей — например, Yoast SEO отдаёт карту по адресу /sitemap_index.xml и разбивает её по типам записей. Держать одновременно карту плагина и встроенную не нужно, вторую надо отключить. То же на других платформах: сначала проверьте, нет ли карты уже — она есть чаще, чем думают.
Генератор онлайн. XML sitemap generator обходит сайт как робот и отдаёт готовый файл. Самый известный сервис такого рода — xml-sitemaps.com; бесплатная версия ограничена несколькими сотнями страниц, точный лимит смотрите на самом сервисе. Годится для статических сайтов и разовой задачи. Главный минус — файл статичен: через месяц он не соответствует сайту, и об этом легко забыть.
Программой-краулером. Настольные краулеры собирают карту с полным контролем над тем, что в неё попадёт, — можно исключить неканоническое и закрытое от индексации ещё на этапе сборки. Правильный выбор для крупного сайта без нормальной CMS.
Руками карту имеет смысл писать только для сайта на пять страниц.
После создания: положить в корень, указать в robots.txt строкой Sitemap: https://site.ru/sitemap.xml и добавить в Яндекс Вебмастер и Google Search Console.
Проверка карты сайта
Проверка sitemap.xml делится на формальную и содержательную, и вторая важнее.
Формально файл проверяется в Вебмастере и Search Console — оба показывают ошибки разбора, число найденных адресов и дату последней обработки. Ошибка «не удалось прочитать» чаще всего означает, что карта отдаётся с неверным типом содержимого или что перед <?xml стоит лишний пробел или BOM.
Содержательно проверяется одно: совпадает ли список адресов в карте с тем, что вы хотите видеть в поиске. Для этого нужен сам список — и это следующий раздел.
Как выгрузить все адреса из sitemap.xml
Парсинг URL из карты — рутинная задача, которая всплывает постоянно: сверить с выгрузкой из Вебмастера, прогнать по кодам ответа, сравнить две версии сайта до и после переезда.
Три способа, по возрастанию контроля.
В таблице. Google Таблицы умеют читать XML напрямую:
=IMPORTXML("https://site.ru/sitemap.xml"; "//*[local-name()='loc']")
Конструкция local-name() обязательна: без неё выражение не найдёт ничего, потому что у карты сайта своё пространство имён. Это и есть причина, по которой у большинства «не работает импорт».
Краулером. Настольные краулеры умеют обходить сайт «по списку из карты» — на выходе сразу коды ответа, заголовки и канонические адреса по каждому адресу. Самый практичный способ для регулярной работы.
Скриптом. Когда нужно разобрать индексный файл целиком:
import urllib.request, xml.etree.ElementTree as ET
NS = "{http://www.sitemaps.org/schemas/sitemap/0.9}"
def urls(sitemap):
data = urllib.request.urlopen(sitemap).read()
root = ET.fromstring(data)
if root.tag == NS + "sitemapindex": # индексный файл — идём внутрь
for sm in root.iterfind(f"{NS}sitemap/{NS}loc"):
yield from urls(sm.text.strip())
else:
for loc in root.iterfind(f"{NS}url/{NS}loc"):
yield loc.text.strip()
for u in urls("https://site.ru/sitemap.xml"):
print(u)
Проверка индексного файла по тегу — то, чего не делают короткие примеры из интернета: без неё скрипт на большом сайте вернёт не адреса страниц, а адреса вложенных карт.
Карта сайта проверяется сверкой трёх чисел, а не взглядом на файл.
Первое: сколько адресов в карте. Берётся выгрузкой из раздела выше.
Второе: сколько из них отвечают 200 и канонические. Прогоняете список краулером. Разница с первым числом — это мусор, который вы сами предлагаете роботу.
Третье: сколько страниц в поиске — из Яндекс Вебмастера и Search Console.
Дальше читается разрыв. Второе сильно меньше первого — карта врёт, надо чинить её источник. Третье сильно меньше второго — проблема не в карте, а в качестве страниц или в технических запретах, и переделывать карту бесполезно.
Повторять раз в квартал и обязательно после любого переезда или смены структуры адресов.
Частые вопросы
Обязателен ли sitemap.xml?
Нет. Небольшой сайт с нормальной перелинковкой обойдётся без него. Заметная польза появляется на сайтах от нескольких сотен страниц, при частых публикациях и сразу после переезда или смены структуры адресов.
Ускоряет ли карта сайта индексацию?
Немного — робот узнаёт об адресах раньше. Но карта не заставляет индексировать: если страница признана малоценной или дублем, она останется вне поиска независимо от того, сколько раз указана в файле.
Что делать со страницами, которых больше нет?
Удалять из карты сразу. Оставлять адреса, отдающие 404, «чтобы поисковик заметил удаление», не нужно — робот и так придёт по ним из своего индекса.
Нужна ли отдельная карта для картинок и видео?
Для обычного сайта нет. Смысл появляется, когда изображения — самостоятельный товар: фотобанк, каталог, портфолио, где ищут именно картинки.
Сколько раз в день обновлять файл?
Столько, сколько раз в день меняется сайт. Для CMS это происходит само при публикации. Специально пересобирать карту по расписанию, ничего не изменив, вредно: обновляются даты lastmod, и сигнал о реальных изменениях теряется.