belun.app Блог
EN

XML-карта сайта: что поисковик читает, а что выбрасывает

Два элемента работают, два лежат мёртвым грузом, а одна ошибка экранирования ломает половину самописных карт. Плюс бесплатный генератор sitemap.xml.

Бумажная карта на столе: планирование структуры сайта перед сборкой XML-карты

У каждого адреса в карте сайта может быть четыре элемента. Два Google читает, два молча выбрасывает. Одно это знание экономит кучу времени в таблицах, но почему-то до сих пор мало кому известно.

Генератор XML-карты сайта берёт список адресов и отдаёт файл, который проходит проверку. Ниже — что там происходит внутри.

Два, которые уходят в мусор

changefreq и priority. Google подтвердил в 2023 году, что не учитывает ни то, ни другое, и с тех пор ничего не поменялось. Причина скучная: все подряд ставили всем страницам priority 1.0, и число перестало что-либо значить. С changefreq та же история — сайты объявляли hourly на страницах, которые никто не трогал с 2019 года.

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

С priority особенно смешно: его принимают за рычаг ранжирования. Им он не был никогда. В лучшем случае это подсказка о порядке обхода внутри вашего собственного сайта, а не против чужих.

Два, которые имеют значение

loc — ради него всё и затевалось. lastmod Google действительно использует, но с условием: дата должна выглядеть правдоподобно.

Я видел сайт, который каждую ночь пересобирал карту и проставлял сегодняшнее число всем 4000 адресам. Примерно неделю обход рос. Потом Google сообразил, что даты — это шум, и перестал доверять полю вообще. Для того домена, судя по всему, навсегда. Ставьте дату, когда реально менялось содержимое страницы. Поправленный футер и новый год в копирайте не считаются.

Формат — W3C Datetime: 2026-09-20 или 2026-09-20T14:30:00+03:00, если нужно время. Привычное 20.09.2026 парсер отклонит, 20-09-2026 тоже.

Проблема с амперсандом

Вот это встречается в самописных картах чаще всего. Адрес вида:

https://shop.example.com/search?q=boots&sort=price

внутри <loc> должен выглядеть так:

https://shop.example.com/search?q=boots&amp;sort=price

Пропустили — XML считается битым. И не «один адрес не прошёл», а весь файл целиком, все 12 000 адресов, причём Search Console напишет, что карта нечитаемая, и не покажет, на какой строке сломалось. Экранировать нужно &, <, >, " и '. Генератор закрывает все пять.

Вторая по частоте причина — BOM или пустая строка перед <?xml. Некоторые редакторы добавляют его, не спрашивая.

Ограничения и место файла

50 000 адресов или 50 МБ без сжатия, что наступит раньше. Дальше нужны несколько файлов плюс индекс. Вставьте в инструмент список подлиннее — он сам разложит адреса по файлам, пронумерует их и соберёт индекс.

Про место есть правило, о котором забывают: карта может перечислять только адреса на своём уровне и ниже. Положили файл в /blog/sitemap.xml — на /pricing он никак не влияет. Корень сайта, и никаких сюрпризов.

Одну привычку пора бросить: в июне 2023 года Google отключил пинг-эндпоинт для карт. Вызовы google.com/ping?sitemap= в вашем деплой-скрипте теперь не делают ничего. Пропишите карту в robots.txt через генератор robots.txt и один раз отправьте её в Search Console — дальше поисковик перечитывает файл сам.

Когда карта не нужна

Сайту на 40 страниц с меню, из которого доступно всё, карта не нужна. Робот и так всё найдёт.

Она начинает окупаться, когда сайт большой, когда на страницы ниоткуда не ссылаются или когда хочется, чтобы отчёт об индексации в Search Console охватывал именно нужные адреса, а не все варианты с параметрами.

Вставьте свои адреса в генератор XML-карты сайта и скачайте файл, который пройдёт проверку с первого раза.

Попробуйте инструмент

Генератор XML-карты сайта →