Единый источник данных для страниц и карты
Если карта формируется из тех же записей и по тем же правилам, что и сами страницы, они не могут разойтись: новая страница появляется в карте автоматически, удалённая исчезает. Общие принципы автоматизации разобраны в статье про автоматическую генерацию карты сайта.
Какие адреса включать в карту
- только страницы с кодом ответа 200;
- только индексируемые страницы без noindex;
- только канонические адреса, без вариантов с параметрами;
- только опубликованные материалы.
Пример небольшого генератора
function buildSitemap(posts) {
const items = posts.map(p =>
`<url><loc>${site}/blog/${p.slug}/</loc>` +
`<lastmod>${p.updatedAt.toISOString().slice(0,10)}</lastmod></url>`
);
return '<?xml version="1.0" encoding="UTF-8"?>' +
'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' +
items.join('') + '</urlset>';
}
Честная дата последнего изменения
В поле lastmod должна стоять реальная дата изменения содержимого, а не дата генерации файла. Когда все страницы всегда «обновлены сегодня», поисковая система перестаёт доверять этому значению.
Разделение на несколько файлов
Для большого числа адресов карту разбивают на части и связывают индексным файлом, как в статье про индексный файл sitemap. Генератор должен сам следить за ограничениями на количество адресов и размер файла.
Проверка: после генерации откройте файл, убедитесь, что кодировка и разметка корректны, и подайте его в панель вебмастера.
Кеширование и периодичность обновления
Формировать карту при каждом обращении робота неразумно: на большом сайте это создаёт лишнюю нагрузку. Обычно карту генерируют по расписанию или при изменении данных и сохраняют в виде готового файла. Робот получает мгновенный ответ, а сервер не тратит ресурсы на повторные вычисления.
- обновление при публикации или удалении материала;
- ежедневная полная пересборка как страховка;
- отдача готового файла с заголовками кеширования.
Проверка результата после генерации
Генератор может незаметно начать формировать неверные адреса, например после смены домена или префикса. Добавьте автоматическую проверку: выборочно запросите несколько адресов из готового файла и убедитесь, что они отвечают кодом 200. Если этого не делать, ошибку обнаружит уже поисковая система.
Мультиязычные и региональные версии в карте
Если сайт существует на нескольких языках, для каждой страницы в карте можно указать связи между версиями. Так поисковая система получает информацию о переводах не только со страницы, но и из карты. Убедитесь, что связи взаимные и указывают на канонические адреса.
Частые вопросы
Почему карту лучше формировать из данных приложения?
Так она строится по тем же записям и правилам, что и страницы, поэтому не расходится с реальным содержимым сайта.
Какую дату указывать в поле lastmod?
Реальную дату изменения содержимого страницы, а не дату генерации файла.
Как быть с большим количеством адресов?
Разбить карту на несколько файлов и связать индексным файлом, соблюдая ограничения на число адресов и размер.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.