Sitemap.xml: как создать карту сайта и настроить её правильно

Автор: Опубликовано: 8 минут чтения

Sitemap.xml — служебный XML-файл с перечнем адресов сайта, который помогает поисковым роботам находить и обходить страницы. В руководстве разобраны структура файла и индексной карты, порядок настройки, готовые решения для WordPress, 1С-Битрикс, Tilda, Nuxt, nginx и Apache, способы проверки и типичные ошибки.

Sitemap.xml: как создать карту сайта и настроить её правильно
Содержание
  1. Что такое sitemap.xml и зачем он нужен
  2. Как устроено: синтаксис и формат
  3. Пошаговая настройка
  4. Примеры для популярных CMS и серверов
  5. Как проверить
  6. Частые ошибки

Коротко: как создать и проверить sitemap.xml

  1. Определите состав карты. Включите в файл только канонические страницы, которые должны попасть в индекс: главную, статьи, категории, товары. Исключите корзину, поиск, личный кабинет, страницы фильтров и адреса с параметрами сортировки.
  2. Выберите способ генерации. Для статического сайта подойдёт ручная сборка или онлайн-генератор, для CMS — штатный модуль или плагин, для самописного проекта — скрипт, собирающий адреса из базы данных.
  3. Разместите файл в корне сайта. Стандартный адрес — https://example.com/sitemap.xml. Файл должен отдаваться с кодом 200 и типом содержимого application/xml.
  4. Укажите карту в robots.txt. Добавьте директиву Sitemap: с абсолютным адресом файла. Убедитесь, что сам sitemap.xml не закрыт правилом Disallow.
  5. Отправьте карту в панели вебмастера. Добавьте адрес в раздел «Файлы Sitemap» Яндекс.Вебмастера и в Google Search Console, дождитесь обработки и проверьте число загруженных страниц.
  6. Настройте автообновление. Карта должна пересобираться при публикации новых материалов — по расписанию или по событию сохранения страницы. Устаревший файл теряет смысл.

Что такое sitemap.xml и зачем он нужен

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

Формат описан открытым протоколом sitemaps.org и поддерживается Яндексом, Google, Bing и другими поисковыми системами. Наличие файла не гарантирует индексацию: решение о включении страницы в поисковую базу принимает алгоритм. Но карта заметно помогает в нескольких ситуациях:

  • на сайте много страниц, и часть из них слабо связана внутренними ссылками;
  • сайт молодой, робот заходит редко и обходит мало страниц;
  • нужно сообщить об изменениях: новых разделах, переработанных статьях, добавленных товарах;
  • нужно передать поисковику не-HTML-файлы — изображения и видео;
  • нужно упорядочить обход большой структуры, разбив её на части.

Стоит сразу разделить два инструмента. Карта сайта — это перечень того, что нужно обойти. robots.txt — правила обхода: какие разделы роботу запрещены. Один файл не заменяет другой, и держать их нужно согласованно.

Ограничения протокола: один файл содержит не более 50 000 URL и весит не более 50 МБ без сжатия. Если сайт крупнее, карту делят на несколько файлов и объединяют индексной картой (sitemap index) — она тоже представляет собой отдельный XML-файл.

Как устроено: синтаксис и формат

Простая карта выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2024-11-05</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/blog/karta-sajta/</loc>
    <lastmod>2024-11-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

Разбор тегов:

  • <loc> — обязательный тег. Полный адрес страницы начиная с протокола: https://example.com/page/. Относительные адреса вроде /page/ недопустимы.
  • <lastmod> — дата последнего изменения в формате W3C Datetime: 2024-11-05 или 2024-11-05T18:30:00+03:00.
  • <changefreq> — предполагаемая частота изменений: always, hourly, daily, weekly, monthly, yearly, never.
  • <priority> — приоритет от 0.0 до 1.0, значение по умолчанию — 0.5.

Google официально сообщает, что игнорирует changefreq и priority, а lastmod учитывает только при условии, что даты последовательны и достоверны. Поэтому заполнять все поля «на всякий случай» смысла нет: важнее корректный <loc> и честный <lastmod>.

Правила, которые стоит соблюсти:

  • все адреса в одном файле принадлежат одному хосту — один протокол и один вариант домена, с www или без;
  • специальные символы экранируются: & → &amp;, < → &lt;, > → &gt;;
  • страницы, закрытые в robots.txt или отдающие 404, в карту не включают;
  • файл сохраняется в UTF-8 без BOM.

Индексная карта для крупного сайта:

<?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>2024-11-05</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-blog.xml</loc>
    <lastmod>2024-11-04</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-products.xml.gz</loc>
    <lastmod>2024-11-03</lastmod>
  </sitemap>
</sitemapindex>

В индекс входит до 50 000 карт. Отдельные файлы допускается сжимать в gzip — поисковики принимают sitemap.xml.gz.

Пошаговая настройка

  1. Составьте перечень разделов. Решите, что войдёт в карту: главная, статьи, категории, товары. Служебные страницы — корзину, поиск, личный кабинет, страницы фильтров и сортировки — исключите. Из адресов с параметрами оставьте только канонический вариант.
  2. Выберите способ генерации. Для статического сайта подойдёт ручная сборка или генератор sitemap. Для сайта на CMS — штатный модуль или плагин. Для самописного проекта — скрипт, который собирает адреса из базы и отдаёт XML.
  3. Разместите файл в корне сайта. Стандартный адрес — https://example.com/sitemap.xml. Вложенные пути допустимы, но тогда их нужно указывать полностью и в robots.txt, и в панелях вебмастера.
  4. Проверьте отдачу. Откройте адрес в браузере: должен вернуться код 200 и XML-дерево, а не HTML-страница ошибки.
  5. Пропишите карту в robots.txt. Директива Sitemap: принимает только абсолютный адрес.
  6. Отправьте карту в панели вебмастера. Яндекс.Вебмастер и Google Search Console проверяют файл и показывают число загруженных адресов и список ошибок.
  7. Настройте автообновление. Карта должна пересобираться при публикации новых материалов — по расписанию или по событию сохранения страницы.

Минимальный robots.txt с указанием карты:

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

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

Примеры для популярных CMS и серверов

WordPress

  • С версии 5.5 в WordPress есть встроенная карта /wp-sitemap.xml. Она работает без плагинов и генерируется автоматически.
  • SEO-плагины создают собственные карты: Yoast SEO и Rank Math — /sitemap_index.xml (индекс со ссылками на подкарты), All in One SEO — /sitemap.xml.
  • Если адрес отдаёт 404, откройте «Настройки → Постоянные ссылки» и сохраните настройки заново, затем проверьте, не отключена ли карта в плагине.
  • Держите один источник карты. Когда одновременно работают штатная и плагинная карты, в robots.txt и панелях вебмастера легко запутаться.

1С-Битрикс

  • Карта генерируется модулем SEO. В административном разделе это обычно «Маркетинг» → «SEO» → «Карта сайта»; названия пунктов зависят от редакции и версии продукта.
  • В настройках задают сайт, список инфоблоков и разделов, приоритеты, период обновления и исключения.
  • На больших каталогах генерация идёт порциями, поэтому файл появляется не сразу после сохранения настроек.
  • Проверьте, что у веб-сервера есть права на запись в каталог, куда складывается файл, иначе карта не создастся.

Tilda

  • Карта собирается автоматически, отдельная настройка не требуется; адрес — https://ваш-домен/sitemap.xml.
  • Страницы, у которых в настройках включён запрет индексации, в карту не попадают.
  • После публикации новой страницы карта обновляется не мгновенно. Если адрес нужен срочно, проверьте его повторно через некоторое время.

Nuxt

  • Карта собирается модулем: на этапе сборки для статической генерации или на сервере при SSR.
  • Пример конфигурации:
// nuxt.config.js
export default {
  modules: ['@nuxtjs/sitemap'],
  sitemap: {
    hostname: 'https://example.com',
    gzip: true,
    exclude: ['/admin/**', '/search']
  }
}
  • В разных версиях модуля параметр с доменом называется по-разному (hostname, siteUrl) — сверьтесь с документацией установленной версии.
  • Динамические маршруты, например страницы товаров, нужно явно передать в список routes через функцию, иначе они в карту не попадут.

nginx

Возможны два варианта: отдача готового статического файла из корня сайта или проксирование запроса к приложению, которое формирует карту на лету.

location = /sitemap.xml {
    root /var/www/example.com;
    default_type application/xml;
    charset utf-8;
    expires 1h;
}

location = /sitemap.xml {
    proxy_pass http://127.0.0.1:8080/sitemap.xml;
    proxy_set_header Host $host;
}
  • Точное совпадение location = не даёт общим правилам ЧПУ перехватить адрес карты.
  • Если включён модуль gzip, проверьте, что он не пытается сжать уже сжатый .gz-файл.
  • Второй блок описывает обратный прокси; в реальном конфиге оставляют только один из двух вариантов.

Apache

<Files "sitemap.xml">
    ForceType application/xml
    Header set Cache-Control "public, max-age=3600"
</Files>
  • Директива Header работает при включённом модуле mod_headers.
  • В большинстве сборок расширение .xml уже сопоставлено с application/xml через mime.types, и дополнительная настройка не нужна.
  • Если карту отдаёт скрипт, убедитесь, что на адрес не срабатывает лишний редирект. При переходе на https или склейке зеркал адреса внутри файла должны совпадать с итоговым каноническим хостом — см. 301 редирект.

Как проверить

  • Откройте адрес карты в браузере и убедитесь, что вернулся XML, а не страница ошибки.
  • Посмотрите заголовки ответа:
curl -I https://example.com/sitemap.xml

Ожидается строка HTTP/1.1 200 OK и заголовок Content-Type: application/xml.

  • Проверьте корректность XML синтаксически:
xmllint --noout sitemap.xml

Команда не должна выводить сообщений об ошибках разбора.

  • В Яндекс.Вебмастере откройте «Индексирование» → «Файлы Sitemap», добавьте адрес и посмотрите число загруженных страниц и предупреждения.
  • В Google Search Console зайдите в раздел «Файлы Sitemap», укажите адрес и дождитесь статуса «Успешно».
  • Выборочно проверьте адреса из файла: они должны отдавать код 200, а не 301 или 404.
  • Убедитесь, что сама карта не закрыта в robots.txt и что указанный там адрес совпадает с фактическим.
  • Если нужно ускорить переобход изменённых страниц, используйте IndexNow, когда сайт его поддерживает.

Частые ошибки

  • Относительные адреса в <loc>. Протокол требует полный URL с протоколом и доменом.
  • Смешение хостов. Если в файле есть и http://, и https://, адреса с www и без, робот воспринимает карту как неоднородную.
  • Файл отдаёт 404 или редирект. Проверяйте код ответа, а не только внешний вид в браузере.
  • Неверный тип содержимого. text/html вместо application/xml мешает корректной обработке.
  • BOM или пробелы перед объявлением XML. Лишние символы в начале файла ломают разбор.
  • Незакрытые теги и неэкранированные амперсанды. Параметры в адресах нужно экранировать.
  • Страницы, закрытые в robots.txt. Включать их в карту бессмысленно, а иногда и вредно.
  • Мусорные адреса. Пагинация, фильтры, результаты внутреннего поиска, корзина и дубли с GET-параметрами создают нагрузку на обход.
  • Недостоверный lastmod. Дата «сегодня» у всех страниц или месяцами не обновляемые значения обесценивают поле.
  • Превышение лимитов. Слишком большой файл может не прочитаться целиком — делите карту и используйте индекс.
  • Устаревшая карта. Новые страницы не попадают в файл, а удалённые остаются в нём надолго.
  • Несколько конкурирующих карт. Если карты создают разные плагины, оставьте одну и укажите её в robots.txt и панелях вебмастера.

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

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

Обязателен ли sitemap.xml для попадания сайта в индекс?

Нет. Поисковые роботы находят страницы по внутренним и внешним ссылкам, а карта сайта лишь помогает обходу. Сайт без sitemap.xml может индексироваться нормально, а сайт с картой — не попасть в индекс из-за качества контента или технических проблем.

Сколько адресов можно указать в одном файле sitemap.xml?

Не более 50 000 URL, размер файла без сжатия — не более 50 МБ. Если лимиты превышены, карту делят на несколько файлов и объединяют индексной картой sitemap index, в которую входит до 50 000 карт.

Нужно ли указывать sitemap.xml в robots.txt, если он отправлен в Search Console?

Желательно указать в обоих местах. Директива Sitemap: в robots.txt помогает поисковикам автоматически находить карту, а отправка через панель вебмастера даёт отчёт о загрузке и ошибках.

Почему sitemap.xml не открывается по адресу /sitemap.xml?

Причины обычно технические: файл не создан или лежит не в корне, адрес перехватывает правило ЧПУ, настроен лишний редирект или сервер отдаёт 404. Проверьте код ответа и тип содержимого командой curl -I.

Влияют ли теги priority и changefreq на индексацию?

Google официально сообщает, что игнорирует оба тега. Яндекс также не гарантирует их учёт. Практический эффект даёт корректный адрес в loc и достоверная дата в lastmod — при условии, что она обновляется последовательно.

Можно ли включить в один файл страницы разных доменов?

Нет, все адреса в одном файле должны принадлежать одному хосту с одним протоколом и одним вариантом домена. Для разных доменов создают отдельные карты и отдельные индексные файлы.

Материал подготовлен редакцией справочника Торох и носит справочный характер: интерфейсы программ и настройки серверов зависят от версии. Нашли неточность? Напишите нам.

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

Другие разделы