SEO для малого бизнеса

Карта сайта sitemap.xml: зачем нужна и как сгенерировать

Что такое sitemap.xml, зачем его подавать в Я.Вебмастер и GSC, как сгенерировать на WordPress, Битрикс, Tilda и статике.

обновлено 10 минут чтения 2 Дмитрий Акиндинов
Содержание
  1. Зачем нужен sitemap.xml и что он на самом деле даёт
  2. Структура файла, что в нём должно и не должно быть
  3. Как сгенерировать на разных движках
  4. Большой сайт и sitemap-индекс с разбиением
  5. Как подать в Я.Вебмастер и GSC
  6. Чек-лист после генерации
  7. Когда стоит звать подрядчика
  8. Частые вопросы

Sitemap.xml делается за десять минут и помогает поисковику найти страницы, до которых мало внутренних ссылок. Ограничения формата: 50 000 адресов и 50 МБ в распакованном виде, дальше нужен индекс из нескольких файлов. Приоритет и частоту обновления Google игнорирует с 2018 года.

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

В этой статье разберём, что такое sitemap.xml на самом деле и что он реально даёт, какая структура файла правильная, как его сгенерировать на пяти распространённых движках (WordPress, Битрикс, Tilda, OpenCart, статика на Astro/Next/Hugo), что делать с большим сайтом через sitemap-индекс и как подать карту в Яндекс Вебмастер и Google Search Console так, чтобы потом видеть, что с ней делает поисковик.

Древовидная схема карты сайта в плоском стиле

Зачем нужен sitemap.xml и что он на самом деле даёт

Sitemap.xml — это XML-файл со списком URL вашего сайта, которые вы хотите видеть в индексе поисковика. Формат стандартизирован протоколом sitemaps.org с 2005 года, понимают все основные поисковики: Яндекс, Google, Bing, DuckDuckGo.

Что sitemap делает на самом деле:

  1. Подсказывает поисковику URL, до которых он может не дойти через ссылки. Особенно важно для глубоких разделов и страниц без внешних ссылок.
  2. Передаёт время последнего изменения каждой страницы (lastmod), чтобы робот переобходил часто меняющиеся раньше.
  3. Помогает быстро находить новые страницы. Если sitemap обновляется автоматически и вы пингуете поисковик, новый URL может попасть в индекс за часы, а не за недели.
  4. Даёт точку для диагностики. В Вебмастере и GSC видно, сколько URL в карте, сколько из них в индексе, и на каких этапах теряются.

Чего sitemap НЕ делает:

  • Не заставляет поисковик индексировать страницу. Если у URL noindex или canonical на другую страницу, он его проигнорирует.
  • Не повышает позиции. Это технический сигнал, а не сигнал качества.
  • Не заменяет внутреннюю перелинковку. Карта это вспомогательный канал, основной граф индексации всё равно строится по ссылкам.

То есть sitemap нужен, но магии не делает. Это как почтовый адрес: без него письмо может не дойти, но сам по себе адрес ничего не доставляет.

Когда sitemap особенно важен

  • Молодой сайт без внешних ссылок (чтобы поисковик быстрее увидел все страницы).
  • Магазин с большим каталогом и фильтрами (часть карточек глубоко зарыта).
  • Регулярно обновляемый блог (lastmod помогает быстрее переобходить).
  • Сайт после переезда или редизайна (срочно сообщить поисковику новые URL).
  • Сайт с одностраничной архитектурой и роутингом на JS (поисковику легче найти все маршруты).

Когда без sitemap можно жить: маленькая визитка из 5-10 страниц с явной шапкой и футером, где всё связано ссылками. Но раз сделать sitemap занимает 10 минут, не вижу причин его не сделать в любом случае.

Структура файла, что в нём должно и не должно быть

Базовая структура одна страница:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.ru/</loc>
    <lastmod>2026-04-15T10:30:00+03:00</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.ru/uslugi/</loc>
    <lastmod>2026-04-10T09:00:00+03:00</lastmod>
  </url>
</urlset>

Из тегов реально нужны только два: loc (URL) и lastmod (дата изменения). Теги changefreq и priority Google официально игнорирует с 2018 года, Яндекс относится к ним как к подсказке, не более. Можно их вообще не включать, файл будет легче.

Чего в sitemap быть НЕ должно

Это ключевой пункт, на котором горит больше всего сайтов:

  • Страницы с noindex в meta robots или HTTP-заголовке. Если URL закрыт от индекса, его не место в карте.
  • Страницы с canonical на другой URL. В карте должны быть только канонические версии.
  • 404, 410, 5xx ошибки. Робот будет тратить бюджет на обход неработающих страниц.
  • Цепочки редиректов. URL должен сразу отвечать 200.
  • URL за паролем, в админке, в личном кабинете.
  • Страницы с UTM-метками и прочими параметрами трекинга.
  • Поиск, фильтры, сортировки, пагинация (по умолчанию).

Чтобы проверить, что в карте нет мусора, проще всего после генерации скачать sitemap и пройтись скриптом, который дёргает каждый URL и смотрит код ответа:

curl -s https://example.ru/sitemap.xml | 
  grep -oP '(?<=<loc>)[^<]+' | 
  while read url; do
    code=$(curl -s -o /dev/null -w "%{http_code}" -I "$url")
    echo "$code $url"
  done

Все коды должны быть 200. Если есть 301, 404 или 500, чините источник, а не sitemap.

Лимиты

Один файл sitemap.xml имеет ограничение: 50 000 URL и 50 МБ в распакованном виде. Если упёрлись в лимит, переходим на sitemap-индекс с разбиением (про это ниже).

Как сгенерировать на разных движках

Здесь принцип простой: ничего не пишем руками, всё через стандартные инструменты.

WordPress

Два рабочих варианта.

Yoast SEO (плагин). После установки sitemap появляется по адресу /sitemap_index.xml (это индекс), он включает поднаборы для постов, страниц, категорий и так далее. Включается в настройках плагина: SEO, Общие, Возможности, «Карта сайта XML».

Rank Math. Аналогично, sitemap по адресу /sitemap_index.xml. Настройка: Rank Math SEO, Sitemap Settings.

Если плагины не вариант (минимализм или конфликты), можно встроить отдельный плагин XML Sitemap & Google News, он легче. Можно вообще написать sitemap своим кодом через хук init, но это редко оправдано.

Не использовать одновременно два плагина с sitemap, иначе они начинают конфликтовать на одном пути. Я.Вебмастер ругается на дубли, конкретный URL непонятно куда смотрит.

Битрикс

Встроенный модуль «Поисковая оптимизация». В админке: Сервисы, Поисковая оптимизация, Настройка sitemap.xml. Там создаётся набор правил: какие разделы включать, какие исключить, что делать с инфоблоками, как часто обновлять.

После настройки файл лежит по адресу /sitemap.xml (или своё имя). Битрикс умеет в sitemap-индекс, разбивает по типам контента: товары, разделы, страницы. Это удобно для больших магазинов.

Один важный момент: после структурных изменений на сайте (новый инфоблок, новый раздел, удаление кучи товаров) надо вручную пересоздать sitemap, иначе он остаётся со старым составом. По расписанию через cron его тоже можно обновлять, но это надо настраивать дополнительно.

Tilda

Tilda генерирует sitemap автоматически по адресу https://example.ru/sitemap.xml. Никаких настроек не требуется, обновляется при публикации страниц.

Минусы: вы не управляете содержимым. Если хотите выкинуть из карты страницу, единственный способ — закрыть её через «Настройки страницы, SEO, Не индексировать» или удалить. Параметры lastmod Tilda проставляет своими датами публикации, не датами реального изменения контента.

OpenCart

В стандартном OpenCart sitemap генерируется через расширение SEO Sitemap Pro или встроенный модуль «Каталог, SEO, Карта сайта» (зависит от версии). После настройки доступен по /index.php?route=feed/google_sitemap или ЧПУ-адресу через .htaccess.

Для OpenCart 4 рекомендую плагины с автогенерацией по cron, потому что встроенный модуль создаёт карту по запросу и при больших каталогах может ронять сервер.

Статика (Astro, Next, Hugo)

Здесь sitemap генерируется на этапе билда. Конкретно:

Astro. Официальная интеграция @astrojs/sitemap. В astro.config.mjs:

import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';

export default defineConfig({
  site: 'https://example.ru',
  integrations: [sitemap()],
});

После npm run build файлы sitemap-index.xml и sitemap-0.xml появятся в dist/. Деплоятся вместе с остальной статикой.

Next.js (App Router). В app/sitemap.ts:

import type { MetadataRoute } from 'next';

export default function sitemap(): MetadataRoute.Sitemap {
  return [
    { url: 'https://example.ru/', lastModified: new Date() },
    { url: 'https://example.ru/uslugi/', lastModified: new Date() },
  ];
}

Файл доступен по /sitemap.xml без дополнительной конфигурации.

Hugo. Sitemap генерируется автоматически. Кастомизируется через шаблон layouts/sitemap.xml, исключения через sitemap_exclude: true в frontmatter страницы.

Иконка XML-файла со значком обхода роботом

Большой сайт и sitemap-индекс с разбиением

Если URL больше 50 000 или файл больше 50 МБ, нужен sitemap-индекс. Это файл, который ссылается на другие sitemap-файлы.

Структура индекса:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.ru/sitemap-products.xml</loc>
    <lastmod>2026-04-26T08:00:00+03:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.ru/sitemap-categories.xml</loc>
    <lastmod>2026-04-25T20:00:00+03:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.ru/sitemap-articles.xml</loc>
    <lastmod>2026-04-26T09:30:00+03:00</lastmod>
  </sitemap>
</sitemapindex>

Внутри каждого sitemap-*.xml уже обычный urlset с реальными URL.

Как разбивать

По смыслу, не по количеству. Стандартные группы:

ГруппаЧто включаетЗачем отдельно
PagesСтатические страницы (главная, услуги, контакты)Меняются редко, lastmod стабилен
ProductsКарточки товаровМеняются часто, важна актуальность цены
CategoriesРазделы каталогаСжатый набор, обновляется при редизайне
ArticlesБлог, новостиРегулярные обновления, lastmod критичен
ImagesКартинки (sitemap расширения для image)Если важен поиск картинок

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

Сжатие

Sitemap можно отдавать в виде .xml.gz, поисковики это понимают. Полезно для очень больших файлов, чтобы экономить трафик. URL в sitemap-индексе указывается с расширением .xml.gz. На практике для типичного малого бизнеса этим заморачиваться не нужно.

Как подать в Я.Вебмастер и GSC

Сгенерировать карту это половина дела. Без подачи в панели поисковиков они её найдут только через robots.txt или внешние ссылки, и обычно с задержкой.

Robots.txt

Первое и обязательное действие: добавить ссылку на sitemap в robots.txt. Вот так:

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /search/

Sitemap: https://example.ru/sitemap.xml

Если sitemap-индекс, в robots.txt указываем именно индекс, а не отдельные файлы. Можно прописать несколько строк Sitemap:, если их несколько (например, отдельный sitemap для картинок и видео).

Яндекс Вебмастер

Идём в webmaster.yandex.ru, выбираем сайт, раздел «Индексирование, Файлы Sitemap». Кнопка «Добавить файл Sitemap», вводим полный URL.

Через несколько часов в отчёте появится статус: «Обработан», «Ошибка», «Очередь». Если ошибка — кликаем, смотрим конкретные строки. Чаще всего проблемы:

  • «Превышен лимит URL» — надо разбивать на индекс.
  • «Документ не является корректным XML» — чаще всего лишний BOM в начале файла или открывающий тег с пробелом.
  • «URL не принадлежит сайту» — в карте URL с другого домена или с www вместо без, или http вместо https.
  • «Файл недоступен» — 404, 403 или редирект на самом sitemap.

После успешной обработки в статистике появится количество URL и сколько из них уже в поиске.

Google Search Console

Идём в search.google.com/search-console, выбираем ресурс, раздел «Sitemaps». Вводим относительный путь (например, sitemap.xml), отправляем.

Статус «Успешно» приходит обычно в течение часа. Через сутки начинает появляться статистика: обнаружено URL, проиндексировано. Разница между этими числами и есть ваша главная метрика технического SEO. Если из 1000 URL в карте проиндексировано 200, надо разбираться, что мешает индексировать остальные 800.

GSC даёт встроенный инструмент проверки конкретного URL: вставляете адрес в верхнюю строку поиска, видите, проиндексирована ли страница, когда последний раз её обходил Googlebot, какие были ошибки.

Пинг при обновлении

Можно дополнительно дёргать поисковик каждый раз при существенных изменениях. Раньше работали HTTP-эндпойнты ping, но Google их закрыл в 2024 году. Сейчас по факту работает только подача через консоль и обновление lastmod в самой карте.

Для Яндекса всё ещё работает API: https://yandex.ru/indexnow (это общий эндпойнт IndexNow, поддерживаемый и Яндексом, и Bing). Документация: https://yandex.ru/support/webmaster/indexnow.html.

Пример пинга через curl:

curl -X POST https://yandex.ru/indexnow 
  -H "Content-Type: application/json" 
  -d '{
    "host": "example.ru",
    "key": "YOUR_KEY",
    "urlList": [
      "https://example.ru/blog/new-article/"
    ]
  }'

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

Глобус с сетью соединённых точек, символизирующей карту сайта

Чек-лист после генерации

[ ] Sitemap доступен по адресу /sitemap.xml без авторизации
[ ] Файл валидный XML, без BOM, открывается в браузере
[ ] В карте только канонические URL, отвечающие 200
[ ] Нет страниц с noindex, нет поиска, нет фильтров
[ ] lastmod проставлен и обновляется при изменении страницы
[ ] Размер файла меньше 50 МБ, URL меньше 50 000
[ ] Если больше, есть sitemap-индекс с разбиением по типам
[ ] В robots.txt указана строка Sitemap
[ ] Карта подана в Яндекс Вебмастер
[ ] Карта подана в Google Search Console
[ ] Через сутки проверены статусы обработки в обеих панелях

Если хотя бы один пункт не отмечен, это потенциальная утечка трафика. Не катастрофическая, но обидная.

Когда стоит звать подрядчика

Самостоятельно генерировать sitemap может почти любой владелец сайта, особенно на WordPress и Tilda, где это вопрос пары кликов. Подрядчик нужен в трёх случаях.

Первый — большой каталог на Битриксе или OpenCart с десятками тысяч товаров, где разбиение по группам надо проектировать с учётом частоты обновлений и где обычная sitemap-генерация роняет сервер. Тут нужна аккуратная настройка cron-задачи и иногда отдельный воркер для генерации в фоне.

Второй — сайт после переезда или большого редизайна, где надо одновременно почистить старую карту от устаревших URL, поставить 301 редиректы и подать новый sitemap так, чтобы не потерять позиции. Это не пять минут, и шанс что-то сломать высокий.

Третий — если в Вебмастере давно горит красным «большое количество страниц-дублей» или «много исключённых URL», и причина именно в неправильной карте сайта. Тут нужен не просто новый sitemap, а аудит того, что вообще должно индексироваться.

В рамках абонентского обслуживания sitemap проверяется ежемесячно: смотрим разницу между URL в карте и URL в индексе, чиним то, что мешает. Если просто хотите отдать настройку sitemap на один раз, напишите через форму, сделаем за день.

Другие материалы по SEO лежат в рубрике /blog/category/seo/.

Частые вопросы

Зачем нужен sitemap.xml

Чтобы поисковик нашёл страницы, на которые ведёт мало внутренних ссылок. На позиции карта не влияет. Влияет на скорость обнаружения.

Что должно быть в карте сайта

Только те адреса, которые вы хотите видеть в поиске: с кодом 200, каноничные, не закрытые от индексации. Дубли, редиректы и служебные страницы в карте это прямой вред.

Нужны ли приоритет и частота обновления

Нет. Google официально их игнорирует с 2018 года, Яндекс относится к ним как к подсказке. Реально полезна только дата последнего изменения, и то если она честная.

Что делать, если страниц больше 50 тысяч

Разбить на несколько файлов и собрать индекс карт. То же самое нужно, если файл переваливает за 50 МБ в распакованном виде.

Передайте техническую часть в надёжные руки.

Слежу за хостингом, бэкапами и обновлениями. Когда что-то пойдёт не так – звоните мне, не своему программисту, не в спортзал и не маме.

Короткие вопросы по теме

Все вопросы по теме "SEO для малого бизнеса"

Заявка

Обсудим задачу

Напишите имя и телефон, выберите удобный канал. Перезвоню или напишу в течение часа в рабочее время.

Куда удобнее ответить?