Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Транслит для загранпаспорта ГОСТ 7.79 ISO 9 Блог Вопросы и ответы Создать URL
Разработка

Генерация карты сайта из кода приложения

Продолжая тему разработки, разберём практическую задачу — как программно формировать корректный файл карты сайта.

Единый источник данных для страниц и карты

Если карта формируется из тех же записей и по тем же правилам, что и сами страницы, они не могут разойтись: новая страница появляется в карте автоматически, удалённая исчезает. Общие принципы автоматизации разобраны в статье про автоматическую генерацию карты сайта.

Какие адреса включать в карту

  • только страницы с кодом ответа 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?

Реальную дату изменения содержимого страницы, а не дату генерации файла.

Как быть с большим количеством адресов?

Разбить карту на несколько файлов и связать индексным файлом, соблюдая ограничения на число адресов и размер.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также

4 мин чтения

Маршрутизация в Nuxt и Vue Router

Vue сам по себе создаёт клиентское приложение, а Nuxt добавляет серверный рендеринг и файловую маршрутизацию — и именно эта связка определяет, увидит ли робот ваши страницы.

Читать статью →