Skip to content
PПромтбук
RUEN
01SEO

Sitemap-стратегия: XML, priority, hreflang, split

Структура XML-sitemap, priority/lastmod без иллюзий, разделение крупных сайтов, hreflang. Как избежать «kitchen sink».

Действуй как technical SEO. Сайт: {{site_size}} URL. Языки: {{languages}}. Контент: {{content_types}}. Стек: {{framework}}.

Sitemap — не «список всех URL», а сигнал для краулера: «вот что важно, вот когда менялось, вот связи между языками». Сделанный «как попало» sitemap может навредить.

Принцип 1 — Что включать (и что НЕ)

Включать

  • Canonical URL (без параметров, без trailing slash если так на сайте)
  • Только indexable страницы (без noindex, без блокировки в robots.txt)
  • Только страницы со статус 200
  • Только страницы с реальным контентом (не тонкие)

НЕ включать

  • Параметрические URL (?ref=, ?utm_, ?page=2 если есть canonical на page 1)
  • Страницы поиска, фильтры, корзины
  • 404 / 301-цепочки
  • Дубликаты под разными slug
  • Pagination 2+ (вместо этого rel=next / prev)

Принцип 2 — Структура XML

<?xml version="1.0" encoding="UTF-8"?>
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/article/foo</loc>
    <lastmod>2026-05-10T12:00:00+00:00</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/article/foo"/>
    <xhtml:link rel="alternate" hreflang="ru-RU" href="https://example.com/ru/article/foo"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/article/foo"/>
    <image:image>
      <image:loc>https://example.com/img/foo.jpg</image:loc>
    </image:image>
  </url>
</urlset>

Принцип 3 — Priority / lastmod / changefreq (без иллюзий)

Priority

  • Google и Bing давно игнорируют значение в большинстве случаев
  • Но: разница между приоритетами помогает в твоих внутренних процессах
  • Рекомендация: 1.0 home, 0.8 категории, 0.6 артикль, 0.4 архив
  • Не делать все 1.0 — теряется сигнал

Lastmod

  • Это работает. Google использует для приоритизации повторного краула
  • Должно быть честным: если страница не менялась — не лгать
  • Формат W3C Datetime: 2026-05-10T12:00:00+00:00
  • Не обновлять lastmod если изменилось только template (хедер сайта)

Changefreq

  • Игнорируется большинством краулеров
  • Оставить можно (хуже не будет), но не вкладывать энергию

Принцип 4 — Разделение крупных сайтов

Лимиты

  • Один sitemap: ≤ 50 000 URL ИЛИ ≤ 50 MB несжатый
  • Если больше — sitemap index + несколько sitemap-файлов

Стратегия разбиения

  • По типу контента: sitemap-articles.xml, sitemap-products.xml, sitemap-videos.xml
  • По свежести: sitemap-recent.xml (последние 30 дней), sitemap-archive.xml
  • По языку: sitemap-en.xml, sitemap-ru.xml (только если hreflang не cross-link)

Sitemap index

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-articles.xml</loc>
    <lastmod>2026-05-17</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-products.xml</loc>
    <lastmod>2026-05-17</lastmod>
  </sitemap>
</sitemapindex>

Принцип 5 — hreflang правильно

Правила

  • Каждая страница ссылается на ВСЕ свои языковые версии (включая себя)
  • Обязательно x-default (страница по умолчанию для незнакомого языка)
  • Симметричные связи: если A→B, то и B→A
  • Коды по ISO 639-1 (язык) + опционально ISO 3166-1 (регион): en, en-GB, pt-BR

Где размещать

  • Опция 1: в sitemap через xhtml:link (рекомендуется при многих URL)
  • Опция 2: в <head> через link rel="alternate" (для малых сайтов)
  • НЕ дублируй в обоих местах — выбери одно

Типовые ошибки

  • ❌ Использовать en-uk вместо en-GB (uk — это украинский!)
  • ❌ Несимметричные ссылки — Google игнорирует целую группу
  • ❌ Забыть x-default — пользователи без матчинга получают «случайный» язык

Принцип 6 — robots.txt и discovery

# robots.txt
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-images.xml

Также:

  • Сабмит в Google Search Console и Bing Webmaster Tools
  • Сабмит при крупных изменениях через Search Console API

Принцип 7 — Image / Video sitemap

Image

  • Отдельный sitemap или image:image внутри url
  • loc обязателен; caption, title, license — опциональны но полезны

Video

  • Отдельный sitemap (video:video schema)
  • Включает thumbnail_loc, title, description, content_loc или player_loc

Шаг 8 — Генерация ({{framework}})

Если Next.js — app/sitemap.ts с типизированным экспортом, динамическая генерация. Если статика — генерация на build. Если очень большой сайт — генератор в фоне с CDN-кешем.

Шаг 9 — Мониторинг

  • Search Console → Sitemaps: количество submitted vs indexed
  • Логи бота: какие страницы крутятся / какие игнорируются
  • Регулярная проверка валидности через sitemap.org validator

Anti-patterns

  • ❌ Sitemap «kitchen sink» — все URL подряд, включая фильтры и параметры
  • ❌ Priority 1.0 на всё — сигнал теряется
  • ❌ Lastmod = «всегда вчерашняя дата» (Google понимает, теряет доверие)
  • ❌ Sitemap > 50MB / 50K URL без разделения — Google отрежет
  • ❌ hreflang только в head на одной части страниц — несогласованность
  • ❌ x-default отсутствует — пользователи получают рандомный язык
  • ❌ Sitemap не обновляется автоматически — деплои не отражены
  • ❌ Sitemap в robots.txt не указан — Google найдёт, Bing может не сразу
  • ❌ Sitemap для страниц с noindex — конфликт сигналов
  • ❌ Игнорировать image / video sitemap при медиа-богатом сайте
К подразделу «SEO»
Похожие промты