sitemap.xml: генерация и отправка

Карта сайта помогает боту найти все важные страницы — особенно на больших и слабо связанных ссылками сайтах.

sitemap.xml — XML-файл со списком URL сайта, которые вы хотите видеть в индексе. Это «оглавление» для поисковика, дополняющее обход по ссылкам.

Зачем нужен sitemap

Бот и так ходит по ссылкам, но sitemap страхует: он подсказывает URL, до которых ссылки ведут плохо (глубоко вложенные, новые, слабо связанные), и помогает обнаружить страницы быстрее. На больших сайтах это критично. У codechick.io sitemap включает ~1100 URL и кешируется на сутки.

Чего sitemap НЕ делает: он не гарантирует индексацию и не «заставляет» бота. Это рекомендация, а не команда.

Sitemap не заменяет внутренние ссылки

Распространённое заблуждение — считать sitemap волшебной кнопкой «проиндексируй всё». Это не так: sitemap помогает обнаружить URL, но вес и важность страницы поисковик оценивает прежде всего по внутренним ссылкам. Страница, на которую ведёт только запись в sitemap и ни одной ссылки с сайта, выглядит для бота как второстепенная — её могут краулить редко или не индексировать вовсе. Поэтому sitemap и грамотная перелинковка работают в паре: ссылки передают важность, sitemap страхует обнаружение. Если важная страница есть только в sitemap — это сигнал, что с навигацией сайта что-то не так.

Формат файла

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://codechick.io/tutorials/seo/canonical</loc>
    <lastmod>2026-06-20</lastmod>
  </url>
  <url>
    <loc>https://codechick.io/journal/kak-rabotaet-https</loc>
    <lastmod>2026-06-18</lastmod>
  </url>
</urlset>

Тег <loc> обязателен — это абсолютный URL. <lastmod> (дата изменения) полезен: помогает боту понять, что обновилось. Теги <changefreq> и <priority> поисковики почти игнорируют — не тратьте на них силы.

Ограничения и индексные sitemap

Один файл — максимум 50 000 URL или 50 МБ. Для крупных сайтов файлы дробят и связывают через индексный sitemap (sitemap of sitemaps):

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://codechick.io/sitemap-tutorials.xml</loc></sitemap>
  <sitemap><loc>https://codechick.io/sitemap-journal.xml</loc></sitemap>
</sitemapindex>

Как работает под капотом: генерация на сервере

В реальном проекте sitemap генерируется кодом из списка опубликованных страниц. Соберём минимальный валидный XML на Python:

pages = [
    {"loc": "https://codechick.io/tutorials/seo", "lastmod": "2026-06-20"},
    {"loc": "https://codechick.io/journal/https",  "lastmod": "2026-06-18"},
]

def build_sitemap(pages):
    lines = ['<?xml version="1.0" encoding="UTF-8"?>']
    lines.append('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')
    for p in pages:
        lines.append("  <url>")
        lines.append(f"    <loc>{p['loc']}</loc>")
        if p.get("lastmod"):
            lines.append(f"    <lastmod>{p['lastmod']}</lastmod>")
        lines.append("  </url>")
    lines.append("</urlset>")
    return "\n".join(lines)

print(build_sitemap(pages))

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://codechick.io/tutorials/seo</loc>
    <lastmod>2026-06-20</lastmod>
  </url>
  <url>
    <loc>https://codechick.io/journal/https</loc>
    <lastmod>2026-06-18</lastmod>
  </url>
</urlset>

Отправка поисковику

  • Укажите путь в robots.txt: строка Sitemap: https://codechick.io/sitemap.xml.
  • Добавьте sitemap в Google Search Console и Яндекс.Вебмастер — там же видно ошибки обработки.

Частые ошибки

  • URL с 404/301/noindex в sitemap — кладите только живые, индексируемые страницы (код 200, canonical на себя).
  • Относительные URL вместо абсолютных — невалидно.
  • Устаревший статический sitemap — генерируйте динамически, чтобы новые страницы попадали автоматически.
  • Превышение лимита 50k URL в одном файле без разбивки на индексный sitemap.

Итог

  • sitemap.xml — оглавление сайта для бота; помогает находить слабо связанные и новые страницы.
  • Кладите только живые индексируемые URL (200, self-canonical); указывайте lastmod.
  • Лимит 50k URL/50 МБ на файл; для крупных сайтов используйте индексный sitemap и отправляйте его в Search Console.
Проверьте себя
1. Гарантирует ли наличие страницы в sitemap.xml её индексацию?
AДа, всё из sitemap попадает в индекс
BНет, sitemap — это рекомендация, помогающая находить страницы, но не команда
CДа, но только для Яндекса
DТолько если указан priority 1.0
2. Какие URL стоит класть в sitemap.xml?
AВсе URL подряд, включая редиректы и 404
BТолько живые индексируемые страницы (код 200, self-canonical)
CТолько страницы с параметрами
DТолько закрытые в robots.txt
3. Каков лимит на один файл sitemap.xml?
A1000 URL
B50 000 URL или 50 МБ
CБез ограничений
DРовно столько, сколько страниц на сайте