Что такое XML-карта сайта и зачем она нужна
XML Sitemap (карта сайта) — это файл в формате XML, который содержит список всех важных URL вашего сайта. Он помогает поисковым роботам быстрее обнаруживать, сканировать и индексировать страницы, особенно те, которые плохо связаны внутренними ссылками.
Sitemap — это не гарантия индексации, а рекомендация поисковику. Но правильно составленная карта сайта:
- Ускоряет индексацию новых страниц в 2–5 раз
- Помогает роботу обнаружить глубокие страницы
- Сообщает о приоритетах и частоте обновлений
- Позволяет сегментировать URL по типам (товары, статьи, категории)
В Pulse Digital мы создаём кастомные Sitemap для каждого проекта в рамках технического SEO аудита. Ниже — полное руководство.
Формат XML Sitemap: синтаксис и теги
Базовая структура
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2026-04-10T14:30:00+03:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/catalog/</loc>
<lastmod>2026-04-09</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Описание тегов
| Тег | Обязательный | Назначение | Пример |
|---|---|---|---|
<loc> |
Да | Полный URL страницы | https://example.com/page |
<lastmod> |
Нет (но важен) | Дата последнего изменения | 2026-04-10 или ISO 8601 |
<changefreq> |
Нет | Ожидаемая частота изменений | daily, weekly, monthly |
<priority> |
Нет | Приоритет относительно других URL | 0.0 – 1.0 |
Важные нюансы
<loc>— должен содержать полный абсолютный URL с протоколом (https://). Относительные пути не допускаются.<lastmod>— должен отражать реальную дату изменения контента, а не текущую дату при генерации. Яндекс явно предупреждает: еслиlastmodвсегда равен текущей дате — робот перестаёт ему доверять.<changefreq>— носит рекомендательный характер. Яндекс и Google могут игнорировать этот тег и определять частоту обхода самостоятельно.<priority>— относительный приоритет внутри сайта. Не влияет на сравнение с другими сайтами. По умолчанию —0.5.
Индексный Sitemap (Sitemap Index)
Для сайтов с более чем 50 000 URL или файлом более 50 МБ необходим индексный Sitemap — файл, который ссылается на отдельные Sitemap-файлы:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-pages.xml</loc>
<lastmod>2026-04-10</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2026-04-09</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-blog.xml</loc>
<lastmod>2026-04-08</lastmod>
</sitemap>
</sitemapindex>
Рекомендации по сегментации
Разбивайте Sitemap по типам контента:
| Файл | Содержание | Примерный объём |
|---|---|---|
sitemap-pages.xml |
Основные страницы (главная, о компании, контакты) | 10–50 URL |
sitemap-categories.xml |
Категории каталога | 50–500 URL |
sitemap-products.xml |
Товарные карточки | 1 000–50 000 URL |
sitemap-blog.xml |
Статьи блога | 50–5 000 URL |
sitemap-regions.xml |
Региональные страницы | 50–500 URL |
Преимущества сегментации:
- Проще отслеживать индексацию по типам
- При обновлении товаров не нужно перегенерировать весь Sitemap
- В Вебмастере видна статистика по каждому файлу отдельно
Создание Sitemap для разных CMS
WordPress
Встроенный Sitemap (с версии 5.5):
WordPress автоматически генерирует Sitemap по адресу https://example.com/wp-sitemap.xml. Но он базовый — без lastmod, без priority.
Рекомендованные плагины:
- Yoast SEO — полноценный Sitemap с настройками исключения типов записей
- Rank Math — аналогичный функционал с более гибкими настройками
- XML Sitemap Generator for Google — минималистичный плагин
Настройка в Yoast SEO:
- SEO → Общие → Возможности → XML-карты сайтов: Вкл
- В разделах «Типы записей» и «Таксономии» отключите ненужные типы (метки, форматы)
- Sitemap доступен по:
https://example.com/sitemap_index.xml
1С-Битрикс
Битрикс имеет встроенный генератор Sitemap:
- Маркетинг → Поисковая оптимизация → Настройка карты сайта
- Выберите информационные блоки для включения
- Настройте changefreq и priority для каждого типа
- Запустите генерацию
Проблема Битрикса: генератор часто включает служебные URL (print-версии, RSS). Проверяйте результат вручную.
Django
Встроенный django.contrib.sitemaps:
# sitemaps.py
from django.contrib.sitemaps import Sitemap
from .models import Product, BlogPost
class ProductSitemap(Sitemap):
changefreq = "weekly"
priority = 0.8
def items(self):
return Product.objects.filter(is_active=True)
def lastmod(self, obj):
return obj.updated_at
class BlogSitemap(Sitemap):
changefreq = "monthly"
priority = 0.6
def items(self):
return BlogPost.objects.filter(status='published')
def lastmod(self, obj):
return obj.updated_at
# urls.py
from django.contrib.sitemaps.views import sitemap
sitemaps = {
'products': ProductSitemap,
'blog': BlogSitemap,
}
urlpatterns = [
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}),
]
Кастомный PHP
Для сайтов на чистом PHP или кастомных фреймворках:
<?php
header('Content-Type: application/xml; charset=UTF-8');
$pdo = new PDO('mysql:host=localhost;dbname=mydb', 'user', 'pass');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
// Статические страницы
$pages = [
['/', '1.0', 'daily'],
['/about', '0.6', 'monthly'],
['/contacts', '0.6', 'monthly'],
];
foreach ($pages as [$url, $priority, $freq]) {
echo "<url><loc>https://example.com{$url}</loc>";
echo "<priority>{$priority}</priority>";
echo "<changefreq>{$freq}</changefreq></url>";
}
// Динамические страницы из БД
$stmt = $pdo->query('
SELECT slug, updated_at
FROM products WHERE status = "active"
');
while ($row = $stmt->fetch()) {
$date = date('Y-m-d', strtotime($row['updated_at']));
echo "<url><loc>https://example.com/product/{$row['slug']}</loc>";
echo "<lastmod>{$date}</lastmod>";
echo "<priority>0.8</priority></url>";
}
echo '</urlset>';
Правила включения и исключения URL
Что ВКЛЮЧАТЬ в Sitemap
- Все каноничные страницы (указанные в
rel="canonical") - Страницы со статусом 200
- Страницы, открытые для индексации (без
noindex) - Страницы, не закрытые в robots.txt
Что ИСКЛЮЧАТЬ из Sitemap
- URL с 301-редиректом → указывайте конечный URL
- Страницы с noindex → противоречивый сигнал
- URL, закрытые в robots.txt
- Страницы с параметрами (UTM, сортировки, фильтры)
- Пагинация (спорный вопрос — зависит от стратегии)
- Дубли (HTTP/HTTPS, www/без www, со слешем/без)
- Страницы с тонким контентом или заглушки
Золотое правило
В Sitemap должны быть только те URL, которые вы хотите видеть в индексе Яндекса.
Каждый URL в Sitemap — это рекомендация роботу просканировать страницу. Не тратьте краулинговый бюджет на мусор.
Размещение и подключение Sitemap
Где разместить
Стандартное расположение: https://example.com/sitemap.xml
Допустимо другое имя и расположение, но тогда укажите путь явно.
Как подключить
Способ 1: robots.txt (рекомендуется)
Sitemap: https://example.com/sitemap.xml
Директива Sitemap может быть вне блока User-agent — она глобальная.
Способ 2: Яндекс.Вебмастер
- Индексирование → Файлы Sitemap
- Добавьте URL вашего Sitemap
- Яндекс начнёт обработку в течение нескольких часов
Способ 3: Google Search Console
- Sitemaps → Add a new sitemap
- Введите URL
Рекомендуется использовать все три способа одновременно.
Мониторинг и диагностика
Яндекс.Вебмастер
В разделе «Файлы Sitemap» отображается:
- Дата обработки — когда Яндекс последний раз прочитал файл
- Количество URL в Sitemap
- Количество проиндексированных из Sitemap
- Ошибки — невалидные URL, недоступные страницы
Если количество проиндексированных URL значительно меньше, чем в Sitemap — ищите проблемы:
- Страницы возвращают ошибки
- Контент низкого качества
- Страницы дублируют другие URL
- Страницы закрыты в robots.txt или через noindex
Валидация XML
Проверяйте синтаксис перед загрузкой:
xmllint --schema https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd sitemap.xml --noout
Или используйте онлайн-валидаторы: XML-Sitemaps.com, Screaming Frog.
Специальные виды Sitemap
Sitemap для изображений
<url>
<loc>https://example.com/product/123</loc>
<image:image>
<image:loc>https://example.com/img/product-123.jpg</image:loc>
<image:title>Название товара</image:title>
<image:caption>Описание изображения</image:caption>
</image:image>
</url>
Помогает индексировать изображения для Яндекс.Картинок — дополнительный источник трафика.
Sitemap для видео
<url>
<loc>https://example.com/blog/video-guide</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumb.jpg</video:thumbnail_loc>
<video:title>Видео-гайд по SEO</video:title>
<video:description>Подробное руководство...</video:description>
<video:content_loc>https://example.com/video.mp4</video:content_loc>
</video:video>
</url>
Sitemap для новостей
Для сайтов, включённых в Яндекс.Новости:
<url>
<loc>https://example.com/news/article-123</loc>
<news:news>
<news:publication>
<news:name>Название издания</news:name>
<news:language>ru</news:language>
</news:publication>
<news:publication_date>2026-04-14</news:publication_date>
<news:title>Заголовок новости</news:title>
</news:news>
</url>
Автоматизация обновления Sitemap
Cron-задача для PHP
# Обновление sitemap каждый час
0 * * * * php /var/www/example.com/generate-sitemap.php
Событийное обновление
Лучший подход — обновлять Sitemap при каждом изменении контента:
- При создании/обновлении/удалении страницы → перегенерируйте соответствующий сегмент
- Отправьте уведомление через IndexNow для изменённых URL
- Обновите
lastmodтолько для реально изменённых страниц
Типичные ошибки
Ошибка 1: Sitemap содержит 404 и редиректы
Каждый такой URL — это потраченный краулинговый бюджет и сигнал о плохом качестве сайта.
Ошибка 2: Всегда текущая дата в lastmod
Яндекс быстро определяет подделку и перестаёт доверять lastmod. Указывайте реальную дату изменения.
Ошибка 3: Несоответствие canonical и Sitemap
Если в Sitemap указан URL A, а на странице rel="canonical" указывает на B — конфликтный сигнал.
Ошибка 4: Один огромный файл
Sitemap на 200 000 URL замедляет обработку. Разбивайте на сегменты по 10 000–30 000 URL.
Ошибка 5: Забытый Sitemap
Сайт развивается, появляются новые разделы, а Sitemap остаётся старым. Автоматизируйте генерацию.
FAQ
Обязателен ли Sitemap для SEO?
Формально — нет. Яндекс может обнаружить все страницы через внутренние ссылки. Но для сайтов с более чем 100 страниц Sitemap значительно ускоряет и улучшает индексацию.
Можно ли использовать сжатый Sitemap (gzip)?
Да, Яндекс и Google поддерживают sitemap.xml.gz. Для больших файлов это рекомендуется — уменьшает размер в 5–10 раз.
Влияет ли priority на ранжирование?
Нет, priority не влияет на позиции. Это только подсказка роботу о приоритете обхода внутри вашего сайта.
Сколько Sitemap-файлов можно указать в robots.txt?
Ограничений нет. Можно указать несколько директив Sitemap: — робот обработает все.
Нужен ли Sitemap для блога из 20 статей?
Для небольших сайтов Sitemap менее критичен, но не лишний. Особенно полезен для ускорения индексации новых публикаций.
Правильно составленный Sitemap — обязательный элемент технического SEO. Нужна помощь с генерацией и мониторингом? Pulse Digital настроит автоматическую генерацию Sitemap, подключит его к Вебмастеру и обеспечит регулярный мониторинг индексации.