Что включать в sitemap.xml: лучшие практики
Хорошая карта сайта — это короткий и честный список канонических страниц. Разбираем, что в неё включать, что выбрасывать и как поддерживать её в форме.
В XML-карту сайта включайте только канонические, индексируемые страницы, отвечающие кодом 200. Поддерживайте lastmod правдивым, не тратьте силы на changefreq и priority — Google их игнорирует, — следите за лимитами в 50 000 URL и 50 МБ и объявляйте карту в robots.txt. Остальное — детали, и о них ниже.
Что должно быть в карте сайта
Карта сайта — это не опись всего, что умеет отдавать сервер, а список страниц, которые вы просите проиндексировать. Каждый URL в ней должен одновременно удовлетворять трём условиям:
- Канонический. Только та версия страницы, на которую указывает rel="canonical". Дубликаты с параметрами, версии для печати, http-варианты при каноническом https — всё это в карту не входит.
- Индексируемый. Без noindex, не закрыт в robots.txt, доступен без авторизации.
- Отвечает кодом 200. Не редирект, не 404, не «мягкая» страница ошибки. Каждый URL с редиректом в карте — впустую потраченный запрос краулера.
Соответственно, в карте не место страницам пагинации ради пагинации, результатам внутреннего поиска, техническим страницам корзины и личного кабинета, а также «тонким» страницам, которые вы сами не хотели бы видеть в выдаче.
Честный lastmod — единственное поле, которое работает
Google использует <lastmod> как сигнал для переобхода, но только при одном условии: даты должны быть стабильно точными. Если при каждой сборке сайта все страницы получают «сегодняшнюю» дату, поле быстро теряет доверие и игнорируется. Правильная стратегия — писать в lastmod дату последнего содержательного изменения страницы: правки текста, обновления цены, нового отзыва. Косметика вроде смены года в подвале изменением не считается.
changefreq и priority: можно не заполнять
Скажем прямо: Google игнорирует и <changefreq>, и <priority> — это подтверждено официальной документацией Google. Яндекс тоже по большей части не учитывает priority. Эти поля — валидный XML, ошибкой они не являются, но реального влияния на обход не оказывают. Частоту переобхода определяют честный lastmod, внутренняя перелинковка и общая «живость» сайта, а не число 0.9 в приоритете. Если генератор их проставляет — пусть, но тратить время на их «оптимизацию» не нужно.
Откуда брать дату? Лучший источник — поле «обновлено» в базе данных или системе управления контентом, привязанное к содержательным правкам. Для статических сайтов подойдёт дата коммита, в котором менялся файл страницы. Худший вариант — время сборки: оно превращает lastmod в шум и лишает вас единственного рабочего сигнала переобхода.
Мифы и реальность
| Миф | Реальность |
|---|---|
| priority=1.0 поднимает страницу в выдаче | Google и, по большей части, Яндекс игнорируют priority. На ранжирование поле не влияет вовсе |
| changefreq=always заставит краулер приходить чаще | Google игнорирует changefreq. Частоту обхода определяют lastmod и реальные изменения |
| Карта сайта гарантирует индексацию | Карта — рекомендация краулеру, а не приказ. Страница всё равно должна пройти отбор на качество |
| Чем больше URL в карте, тем лучше | Лишние и неканонические URL тратят краулинговый бюджет и размывают сигнал |
| lastmod можно ставить «сегодня» для всех страниц | Google использует lastmod только при стабильной точности; массовые фальшивые даты обнуляют поле |
| Без карты сайт не проиндексируется | Небольшой сайт с хорошей перелинковкой индексируется и без карты; карта ускоряет и упорядочивает процесс |
Лимиты, разбиение и gzip
Один файл — не более 50 000 URL и 50 МБ в несжатом виде. На практике разбивать карту стоит раньше: файлы по 10 000–20 000 URL быстрее генерируются, быстрее отдаются и удобнее отлаживаются. Части перечисляются в файле индекса Sitemap — как его устроить, разобрано в отдельном руководстве. Карту можно сжимать в gzip (sitemap.xml.gz): это экономит трафик и время отдачи, но помните, что лимит в 50 МБ применяется к распакованному содержимому.
Автообнаружение через robots.txt
Добавьте в robots.txt строку с абсолютным адресом карты:
Sitemap: https://example.com/sitemap.xml
Эту строку понимают все крупные поисковые системы, и она работает даже для тех, где вы не заводили кабинет вебмастера. Строк Sitemap может быть несколько, а указывать в них лучше индекс, если он есть.
Отправка в панели вебмастера
Автообнаружения достаточно для обхода, но отправка через панель даёт главное — обратную связь и статистику:
- Google Search Console — раздел «Файлы Sitemap»: статус обработки, количество обнаруженных URL и список ошибок.
- Яндекс.Вебмастер — «Индексирование → Файлы Sitemap»: для аудитории Рунета это обязательный шаг, Яндекс активно опирается на карту при обходе. Подробности — в справке Яндекса.
- Bing Webmaster Tools — той же дорогой; Bing умеет импортировать данные из Search Console.
Как часто перегенерировать карту
Ориентир простой: карта должна обновляться с той же скоростью, с какой меняется контент. Новостному сайту нужна регенерация при каждой публикации, интернет-магазину — при изменении ассортимента, визитке из десяти страниц достаточно пересборки при редизайне. Устаревшая карта хуже отсутствующей: она методично скармливает краулеру удалённые URL.
Динамическая или статическая генерация
Оба подхода легальны. Статическая карта собирается на этапе сборки сайта — предсказуемо, быстро отдаётся, идеально для статических сайтов и генераторов. Динамическая формируется приложением на лету и всегда актуальна, но требует кэширования: генерация карты на 50 000 URL на каждый запрос — лишняя нагрузка. Выбирайте по архитектуре сайта, а не по моде; краулеру важен только корректный XML с кодом 200.
Какой бы способ вы ни выбрали, встройте проверку в процесс: у динамических карт после каждого релиза приложения, у статических — после каждой сборки. Ошибка в шаблоне генератора тиражируется на все записи сразу, поэтому один прогон через валидатор после изменения кода дешевле, чем неделя недообхода после молчаливой поломки.
Чек-лист сопровождения
- В карте — только канонические, индексируемые URL со статусом 200.
- lastmod отражает реальные изменения; changefreq и priority не трогаем.
- Разбиение через индекс задолго до лимита в 50 000 URL.
- Строка Sitemap: в robots.txt указывает на актуальный адрес.
- Карта отправлена в Google Search Console, Яндекс.Вебмастер и Bing Webmaster Tools.
- Регенерация синхронизирована с публикацией контента.
- После каждого изменения генератора — проверка в валидаторе.
Если валидатор находит проблемы, точные исправления для каждой ошибки собраны в руководстве об ошибках карты сайта.