XML-карта сайта: что поисковик читает, а что выбрасывает
Два элемента работают, два лежат мёртвым грузом, а одна ошибка экранирования ломает половину самописных карт. Плюс бесплатный генератор sitemap.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&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 — дальше поисковик перечитывает файл сам.
Чем Яндекс отличается от Google
Почти все русскоязычные инструкции написаны по документации Google, а отправлять карту приходится в два поисковика. Разница есть, и она практическая.
Яндекс называет ровно четыре поддерживаемых элемента: loc, lastmod, changefreq и priority. Всё остальное для него «неизвестный тег» — это буквальная формулировка из справочника ошибок. То есть xhtml:link с языковыми версиями, image:image и video:video, которые Google читает, Яндекс просто отбрасывает. Ломается от этого не весь файл, но и пользы ноль.
Второе отличие важнее. Google принимает в качестве карты не только XML: подойдёт обычный текстовый файл со списком адресов по одному в строке и фиды RSS 2.0 или Atom 1.0. Яндекс прямо указывает, что RSS- и Atom-фиды через Sitemap не передаются. Если нужны оба поисковика, формат один — XML.
Третье — длина адреса. Общий лимит 2048 символов, но Яндекс делит его на две части: до 1024 на домен и до 1024 на путь. Адрес, который Google прочитает, Яндекс может отклонить с ошибкой «Слишком длинный URL».
И приятная деталь про кириллицу: Яндекс распознаёт адреса и в закодированном виде, и как есть. Google ждёт закодированные, так что percent-encoding безопаснее — генератор приводит адреса к нему сам.
Полные таблицы — какие элементы кто читает, лимиты и разбор ошибок Вебмастера — лежат на странице инструмента.
Когда карта не нужна
Сайту на 40 страниц с меню, из которого доступно всё, карта не нужна. Робот и так всё найдёт.
Она начинает окупаться, когда сайт большой, когда на страницы ниоткуда не ссылаются или когда хочется, чтобы отчёт об индексации в Search Console охватывал именно нужные адреса, а не все варианты с параметрами.
Вставьте свои адреса в генератор XML-карты сайта и скачайте файл, который пройдёт проверку с первого раза. Если списка адресов под рукой нет, начните с таблицы где его взять: у большинства CMS карта уже лежит по готовому адресу, и собирать её заново не нужно.