Обе карты отвечают на один вопрос — какие страницы есть на сайте, — но читают их разные существа. Отсюда и разница: одна карта живёт по обычному адресу и выглядит как страница, вторая лежит файлом в корне и человеку не показывается.
Две карты и чем они отличаются
| Что сравниваем | Страница карты | Файл sitemap.xml |
|---|---|---|
| Кто читает | Посетитель | Поисковый робот |
| Где лежит | Обычный адрес, ссылка в подвале | Корень сайта, ссылка из robots.txt |
| Что внутри | Разделы с заголовками и ссылками | Адреса и дата последнего изменения |
| Зачем | Найти нужное, когда меню не помогло | Показать роботу все страницы сразу |
Страница карты: вложенные списки
Структура сайта — это дерево, а дерево в разметке записывается вложенными списками. Никаких хитростей: заголовок раздела, под ним список страниц, внутри при необходимости ещё один список.
<nav class="sitemap" aria-label="Карта сайта">
<h2 class="sitemap__title">Этапы</h2>
<ul class="sitemap__list">
<li>
<a href="/etapy/vybor-instrumentov/">Выбор инструментов</a>
<ul class="sitemap__sublist">
<li><a href="/etapy/vybor-instrumentov/chto-takoe-cms/">Что такое CMS</a></li>
<li><a href="/etapy/vybor-instrumentov/shablony/">Шаблоны</a></li>
</ul>
</li>
</ul>
</nav>
Вложенный список кладётся внутрь пункта, а не рядом с ним: подстраница принадлежит разделу, и разметка должна это показывать. Тогда программа чтения экрана объявит «список из пяти пунктов, вложенный», и человек поймёт устройство сайта, не видя отступов.
Файл sitemap.xml: адреса и даты
Это список адресов в формате XML. Робот берёт его целиком и узнаёт обо всех страницах сразу, не переходя по ссылкам. Особенно это помогает новому сайту, на который ещё никто не ссылается.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://eazy-logic.ru/</loc>
<lastmod>2026-09-13</lastmod>
</url>
<url>
<loc>https://eazy-logic.ru/manualy/karta-sayta/</loc>
<lastmod>2026-09-13</lastmod>
</url>
</urlset>
Адрес обязан быть полным — со схемой и доменом. Относительный путь робот не примет. Дату ставьте настоящую: если у всех страниц она сегодняшняя и меняется каждый день, робот перестанет ей верить и будет обходить сайт по своему усмотрению.
Про приоритет и частоту
Теги priority и changefreq
входят в стандарт, но поисковики давно объявили, что
не учитывают их. Ставить не вредно, пользы тоже нет.
Обязательный тег один — loc.
Найти файл робот должен сам, поэтому в robots.txt
добавляется строка со ссылкой на него.
Sitemap: https://eazy-logic.ru/sitemap.xml
Что попросить у нейросети
Оба файла легко собрать из одного источника — списка страниц. Руками их не пишут: на третьей новой странице карта начнёт врать.
У меня статический сайт. Список страниц лежит в файле
pages.json: массив объектов с полями адреса,
типа страницы и названия, вложенность видна по адресу.
Напиши скрипт на Python, который собирает из этого списка
два файла: sitemap.xml по стандарту
sitemaps.org с полными адресами и настоящей датой
последнего изменения файла страницы, и кусок разметки
карты сайта вложенными списками, сгруппированный
по разделам.
Страницы, которых ещё нет на диске, в карты не включать. Домен вынеси в одну переменную наверху. Комментарии по-русски.
Про дату. Берите время изменения самого файла страницы и переводите в формат «год-месяц-день». Так дата всегда настоящая и обновляется сама при правке страницы — отдельного поля в списке заводить не нужно.
Про экранирование. В XML амперсанд
в адресе обязан быть записан как
&. Если адреса с параметрами
вообще возможны, прогоняйте их через штатную функцию
экранирования, а не собирайте строку руками.
Про закрывающий слэш. Адрес в карте должен совпадать с настоящим адресом страницы буква в букву, включая слэш в конце. Разные написания одного адреса робот считает разными страницами.
Обе карты в Evolution CMS
После переезда на CMS ни один из файлов писать не придётся.
Страницу карты собирает DocLister — тот же
сниппет, что рисует меню, только по всему дереву, а не по
одному разделу. Файл sitemap.xml отдаёт
DLSitemap из того же семейства: он ставится на
пустой ресурс с типом содержимого XML, и адрес этого ресурса
указывается в robots.txt.
Одно место в нём стоит поправить сразу: в своей поставке
DLSitemap пишет в каждую строку
priority и changefreq — те самые
подсказки, которые поисковики не читают. Свой шаблон строки
в параметре &tpl оставляет только адрес
и дату.
Выгода та же, что и везде: страница, созданная в админке, попадает в обе карты сама. Ничего не забудется, потому что забывать нечего.
Частые ошибки
| Ошибка | Чем плохо | Как правильно |
|---|---|---|
Относительные адреса в sitemap.xml |
Робот файл не примет | Полный адрес со схемой и доменом |
| Карты написаны руками | Расходятся с сайтом через месяц | Сборка из общего списка страниц |
| В карте закрытые от индексации страницы | Робот получает противоречивые указания | В карте только то, что должно быть в поиске |
| Дата обновляется каждый день у всех | Робот перестаёт верить датам | Время изменения самого файла |
| Ссылки на карту нет нигде | Страницу не находят люди, файл не находит робот | Ссылка в подвале и строка в robots.txt |
Что должно получиться
- Страница карты открывается из подвала и показывает все разделы
- Вложенность на странице передана вложенными списками
-
Файл
sitemap.xmlлежит в корне и открывается в браузере без ошибок -
В
robots.txtесть строка со ссылкой на файл - Обе карты собираются скриптом, а не правятся руками