
Проверка карты сайта чаще всего заканчивается там, где должна начинаться: файл открылся, адреса внутри есть, значит «с sitemap всё нормально». А потом в Вебмастере висит статус «есть ошибки», половина страниц лежит в исключённых, и никто не может связать одно с другим. Карта — это заявка робота на обход, а не пропуск в индекс. И если в заявке перечислены адреса, которые сам сайт же и запрещает индексировать, поисковик разбирается не с сайтом, а с противоречием.
Ниже — порядок, по которому я проверяю карту на живых проектах: что смотреть внутри файла, как найти закрытые и мёртвые адреса, почему дата изменения на WordPress почти всегда неправдива, что делать с лимитами и какие отчёты открывать после правок. Речь о проверке уже существующей карты, а не о создании с нуля.
Что проверять в карте сайта, кроме факта её существования
Ошибки карты делятся на четыре группы, и лечатся они по-разному.
Доставка. Робот не может получить файл: карта отдаёт 404, 403, 500, редирект, ответ приходит дольше таймаута, файл закрыт в robots.txt. Пока не решена эта группа, остальные проверять бессмысленно.
Разбор. Файл получен, но не читается как XML: BOM в начале, лишний перевод строки перед объявлением XML, неэкранированный амперсанд, отсутствующее пространство имён, обрезанный конец файла из-за таймаута генерации.
Содержимое. Файл прочитан, но внутри лежат адреса, которых там быть не должно: закрытые от индексации, отдающие 404, ведущие через редирект, неканонические, с другим протоколом или доменом.
Достоверность. Формально всё корректно, но даты не отражают реальность, и робот перестаёт использовать их как подсказку.
Начинать нужно с самого грубого: открыть карту не в браузере, а запросом, который показывает заголовки ответа, — curl -I https://site.ru/sitemap.xml. Код ответа должен быть 200, тип содержимого — application/xml или text/xml. Тип text/html — уже диагноз: под адресом карты отдаётся страница темы. На WordPress так бывает, когда генерировавший карту плагин отключили, правило перезаписи осталось, и запрос улетает в шаблон 404, который при кривой настройке возвращает код 200. Браузер такую страницу отрисует, а робот получит мусор.
Второй шаг — сравнить количество адресов в карте с числом страниц, которые вы считаете нужными. Расхождение в разы означает либо неполную карту, либо технический мусор внутри. Если разбираться вручную не хочется, начните с бесплатного аудита сайта.
Закрытые от индексации адреса внутри карты
Самая частая находка. Карта говорит роботу «эти страницы важны, обойди их», а сама страница отвечает «меня индексировать нельзя». Запрет приходит из четырёх мест, и проверять надо все четыре.
Метатег robots. В <head> стоит <meta name="robots" content="noindex, follow">. Ставит его SEO-плагин по типу записи: страницы вложений, архивы по датам и авторам, теги без описания, страницы поиска.
HTTP-заголовок X-Robots-Tag. Тот же запрет, но в заголовке ответа. В исходном коде страницы его не видно, поэтому регулярно пропускают. Ищется тем же curl -I или в Вебмастере через «Проверку ответа сервера».
Disallow в robots.txt. Адрес перечислен в карте и одновременно запрещён к обходу; Яндекс помечает такие строки предупреждением. Классика на магазинах: в карту попадают /cart/, /checkout/, /my-account/, а robots их закрывает.
Canonical на другой адрес. Страница не запрещена, но сама указывает, что главная версия — другая. Робот пройдёт по такому адресу, прочитает canonical и уйдёт индексировать другой документ. Отдельная беда — пагинация: адреса вида /blog/page/2/ с каноникалом на первую страницу в карте не нужны. Про логику склейки есть отдельный материал — Rel=canonical — канонические ссылки.
На сайте в тысячу страниц проверять всё это по одному адресу бессмысленно. Рабочий способ: выгрузить адреса из карты в текстовый файл и прогнать краулером в режиме списка — Screaming Frog SEO Spider, Netpeak Spider, SiteAnalyzer. Смотреть нужно четыре колонки: код ответа, значение метатега robots, канонический адрес и признак индексируемости. Всё, что не 200 и не «индексируется», — кандидат на удаление из карты.
Вредит это двумя способами. Робот тратит на такие адреса лимит обхода — тот самый, которого не хватает новым страницам; механика распределения визитов разобрана в статье Краулинговый бюджет сайта: что это такое и как его оптимизировать. И возникает противоречие сигналов, при котором поисковик всегда выбирает более осторожный вариант.
Старые, удалённые и переехавшие страницы в карте
404 и 410. Удалённый товар, снятая с публикации статья, закрытая услуга. Карта продолжает их перечислять, потому что сгенерирована давно или берёт данные из кэша. Один-два таких адреса роботу не мешают, сотня — сигнал, что источнику доверять нельзя. Что происходит с весом, когда битых адресов много, разобрано в материале Как ошибка 404 влияет на позиции сайта.
Адреса, отдающие 301. Формально всё работает, пользователь попадает куда надо. Но карта обязана содержать конечный адрес, а не промежуточный: иначе робот на каждый обход тратит два запроса вместо одного, а в отчётах Вебмастера страница числится как «неканоническая». Встречается после смены структуры адресов, после перехода на HTTPS и после добавления или удаления завершающего слэша.
Черновики и запланированные записи. Некоторые генераторы берут записи по типу, не проверяя статус публикации: в карту попадают draft, pending и записи с будущей датой. Робот получает 404 или страницу входа.
Разнобой в написании адреса. Адрес в карте должен посимвольно совпадать с каноническим: тот же протокол, то же наличие www, тот же регистр, тот же слэш на конце. http://site.ru/uslugi и https://site.ru/uslugi/ — для робота два разных документа, и один из них отдаёт редирект. Кириллица в пути должна быть в percent-encoding, домен — в punycode: карту с сырой кириллицей часть роботов разберёт, часть — нет.
Дата изменения: почему lastmod на WordPress врёт
Тег <lastmod> — подсказка роботу: «документ изменился тогда-то, имеет смысл перечитать». Поисковик не обязан ей верить и решает по одному критерию — насколько дата совпадала с реальностью в прошлые разы. Совпадала — дата экономит обход и ускоряет переиндексацию, врала — её перестают учитывать. На WordPress она врёт по нескольким причинам сразу.
Первая — источник данных. Большинство генераторов берут поле post_modified. Оно обновляется при любом сохранении записи, даже если текст не менялся ни на символ. Открыли «Быстрое редактирование», поменяли рубрику, нажали «Обновить» — дата стала сегодняшней. Массовое действие над сотней записей делает сотню «свежих» документов за секунду.
Вторая — SQL-правки и автоматические обработки. Замена ссылок по всему блогу, пересборка перелинковки, обновление плагина, прогоняющего записи через свою нормализацию, — всё это трогает post_modified. Наутро вы получаете карту, где две тысячи статей «изменены» вчера в 03:14. Робот приходит, сравнивает содержимое с прошлым слепком, отличий не находит — и в следующий раз дате не верит.
Третья — противоположная крайность. Часть плагинов подставляет в lastmod не дату записи, а дату генерации самого файла карты: у всех адресов дата одинаковая и меняется каждый день. Четвёртая — комментарии: в ряде конфигураций дата модификации учитывает последний комментарий, и статья, не менявшаяся год, снова становится «свежей».
Проверяется это за пять минут. Посмотрите на распределение дат в карте: если у большинства адресов дата одна и та же, подсказка сломана. Возьмите три-четыре адреса, которые вы точно не трогали полгода, и сравните дату в карте с реальностью, а затем с датой обновления в HTML самой страницы — расхождение робот тоже видит.
Вывод простой: косметические правки не должны трогать дату, осмысленные — должны, иначе робот не узнает об изменении и придёт через месяц. И не рассчитывайте на changefreq с priority: Яндекс их не использует, Google открыто заявил, что игнорирует.
Размер, лимиты и вложенные карты
Ограничения протокола sitemaps.org: не больше 50 000 адресов и не больше 50 МБ в несжатом виде на один файл. Превышение — файл разбирается частично либо отбрасывается вовсе. Сжатие gzip разрешено, но лимит в 50 МБ считается по распакованному содержимому.
Когда адресов больше, делается индексная карта: файл с корневым элементом <sitemapindex>, внутри которого перечислены обычные карты. Ограничение одно, и его регулярно нарушают: вложенность допускается ровно на один уровень, индексная карта не может ссылаться на другую индексную. Некоторые SEO-плагины при определённых настройках делают именно это. Часть роботов вторую ступень не разворачивает, и половина сайта остаётся неизвестной.
Даже при небольшом числе адресов разбивать карту по типам полезно — отдельно записи, страницы, товары, категории. Причина не в лимитах, а в диагностике: Вебмастер показывает статистику по каждому файлу, и видно, что из карты товаров в поиск попало 30%, а из карты статей — 90%. По сводной карте такого не разглядеть.
Проблема больших сайтов — время генерации. Динамическая карта, собираемая из базы при каждом запросе, на десятках тысяч записей отдаётся десятки секунд. Робот столько не ждёт: обрывает соединение и записывает ошибку загрузки. Внешне карта «работает» — вы же её открываете, просто медленно. Лечится переводом в статический файл по расписанию или кэшированием результата. Признак виден в Вебмастере: статус «не удалось загрузить» при том, что вручную файл открывается.
Ссылка на карту в robots.txt и другие способы передать её роботу
Директива Sitemap — межсекционная: действует независимо от блоков User-agent, ставится в конце файла отдельной строкой и записывается только абсолютным адресом. Ошибки в этой одной строке повторяются из проекта в проект:
- относительный путь
Sitemap: /sitemap.xmlвместо полного адреса — директива игнорируется; http://при том, что сайт давно на HTTPS: робот получает редирект там, где ждёт файл;- адрес старого домена после переезда;
- две-три карты от разных плагинов, часть из которых давно мертва;
- сама карта закрыта правилом вроде
Disallow: /*.xml$; - директива написана внутри блока для конкретного бота и теряется при правках.
Одной строки мало. Карту нужно добавить руками в Яндекс.Вебмастере («Индексирование → Файлы Sitemap») и в Google Search Console. Только там видно, что именно робот прочитал: сколько адресов принял, сколько отбросил, когда обходил. Про остальные конфликты этих двух файлов есть отдельный разбор — Ошибки robots.txt и sitemap.xml: как из-за одной строчки закрыть сайт от Яндекса. Протокол IndexNow карту не заменяет: он сообщает об изменении конкретного адреса здесь и сейчас, а карта описывает состав сайта целиком.
Формат и мелочи, из-за которых карта не разбирается
Здесь ломается не логика, а синтаксис. Проявляется одинаково: Вебмастер пишет «Некорректный формат» или «Ошибка разбора XML», а вы смотрите на файл и не понимаете, что не так, — глазом это не видно.
| Ошибка | Как проявляется | Как найти и исправить |
|---|---|---|
| BOM в начале файла | «Ошибка разбора», первый тег не распознаётся | Открыть файл в редакторе с выбором кодировки, пересохранить как UTF-8 без BOM; на PHP-генераторе — убрать пустые строки после закрывающего тега в подключаемых файлах |
| Неэкранированный амперсанд в адресе | Разбор обрывается на первом же таком адресе | Заменить & на &; лучше — убрать из карты адреса с GET-параметрами вовсе |
| Нет объявления пространства имён | Файл читается как обычный XML, теги не распознаются | В корневом теге должен быть xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" |
| Отдаётся с типом text/html | Формально 200, но робот получает страницу темы | Проверить curl -I, пересохранить постоянные ссылки, отключить конфликтующие правила перезаписи |
Отдельно про XSL: если карта открывается в браузере красивой таблицей со стилями — это не ошибка. Плагины подключают к XML таблицу стилей для удобства человека, робот её не читает.
Что смотреть в Вебмастере после правок и когда карта не поможет
Правки внесены — дальше нужно убедиться, что робот их принял. По одному отчёту судить нельзя, картина складывается из нескольких.
| Где смотреть | Что именно | Тревожный признак |
|---|---|---|
| Индексирование → Файлы Sitemap | Статус, дата последнего обхода, число найденных адресов, ошибки и предупреждения | Статус «не удалось загрузить», дата обхода старше месяца, адресов заметно меньше реального |
| Индексирование → Страницы в поиске | Соотношение «в поиске» и «исключено», а главное — причины исключения | Массовые причины «недостаточно качественная», «неканоническая», «ошибка HTTP» после правок карты |
| Индексирование → Статистика обхода | Распределение кодов ответа по дням, доля 404 и 3xx | Всплеск 404 сразу после загрузки новой карты — значит, в неё попали мёртвые адреса |
| Инструменты → Проверка ответа сервера | Код, заголовки, метатег robots и canonical выборочных адресов из карты | Расхождение между тем, что видите вы, и тем, что получает робот |
О сроках. Карта перечитывается не мгновенно: обычно от нескольких дней до двух недель, на редко обновляемых сайтах дольше. Судить об эффекте через сутки нельзя. Разумный горизонт — месяц, и сравнивать надо динамику исключённых страниц по каждой причине отдельно. Как читать эти отчёты, описано в материале Как читать Яндекс.Вебмастер: три отчёта, которые находят точки роста.
И о том, чего от карты ждать не стоит. Она не заставляет индексировать: сообщает о существовании адреса, а решение принимает алгоритм на основании качества документа. Страница без содержания в поиск не попадёт, сколько раз её ни перечисляй; если адреса вылетают с формулировкой «недостаточно качественная», смотрите разбор Диагностика индексации сайта за 20 минут: семь проверок, которые находят причину.
Карта не заменяет внутренние ссылки: документ, на который не ведёт ни одна ссылка с сайта, робот считает второстепенным, и вес по такому адресу не передаётся. Она не лечит дубли, не участвует в ранжировании и не отменяет 301-редиректы — при смене структуры адресов редиректы обязаны стоять, а в карте должны быть только новые адреса.
Частые вопросы
Нужна ли карта сайта небольшому сайту на двадцать страниц? Обязательной её назвать нельзя: при нормальной перелинковке и вменяемом меню робот найдёт всё сам. Но вреда нет, а польза есть — в Вебмастере появляется отдельный отчёт по составу сайта и точка контроля, из которой видно расхождение между тем, что вы считаете сайтом, и тем, что видит робот.
Сколько карт можно указать в robots.txt? Формально сколько угодно, каждую отдельной строкой. Практически — одну индексную, ссылающуюся на остальные. Несколько независимых директив почти всегда означают, что старые карты не удалили после смены плагина.
Что делать со страницами, которые есть в карте, но неделями не индексируются? Сначала исключить техническую причину: код ответа, метатег robots, canonical, доступность для робота. Если технически чисто — дело в содержании или в отсутствии внутренних ссылок на страницу. Карта здесь уже не инструмент.
Коротко
- Наличие файла ничего не доказывает: проверяйте карту по четырём группам — доставка, разбор, содержимое, достоверность дат.
- Главная ошибка — закрытые от индексации адреса внутри карты; запрет приходит из метатега robots, заголовка X-Robots-Tag, robots.txt и canonical.
- В карте не должно быть 404, редиректов, черновиков и адресов с другим протоколом или написанием — массово это ловится краулером в режиме списка.
- На WordPress
lastmodврёт из-за поляpost_modified: любое пересохранение делает страницу «свежей», а сломанной дате робот перестаёт верить. - Лимиты — 50 000 адресов и 50 МБ, индексная карта допускает только один уровень вложенности, медленная генерация приводит к обрыву загрузки.
- В robots.txt — абсолютный адрес актуальной карты плюс добавление вручную в Вебмастер и Search Console; выводы после правок делать через месяц, а не через сутки.
Если карта вычищена, а страницы всё равно не заходят в индекс, причина глубже — в структуре, качестве документов или распределении внутреннего веса. Такое разбирается точечно: на персональной SEO-консультации мы проходим по вашим отчётам вместе и находим, где теряются страницы. Общая логика работ описана на странице продвижение сайта у частного SEO-специалиста.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Влада Мезенцова
В Вебмастере по карте написано «Файл проверен, обнаружены ошибки», а список ошибок пустой. Куда смотреть?
Анатолий Кузнецов автор
Список пустой обычно потому, что вы смотрите не туда: ошибки и предупреждения лежат на отдельных вкладках внутри карточки конкретного файла, а не в общей сводке. Откройте саму карту в списке, там будет разбивка по строкам с указанием номера строки и причины. Если и там пусто, скорее всего, отчёт показывает данные предыдущей проверки, а новая ещё не завершилась — статус обновляется не мгновенно. Второй частый вариант: ошибка относится к индексной карте, а предупреждения — к вложенным, и их надо открывать по очереди. И проверьте заодно, что вы смотрите тот файл, который реально указан в robots.txt, а не старую карту от прежнего плагина, которая осталась в списке с прошлого года.
Спиридон Быстряков
У меня в карте 4300 адресов, а в поиске 1900. Это плохо?
Радим Голощапов
Плагин ставит lastmod на все страницы одинаковый — дату генерации файла. Стоит ли из-за этого менять плагин?
Анатолий Кузнецов автор
Менять плагин целиком ради одного тега — избыточно, сначала посмотрите настройки: у большинства генераторов есть переключатель источника даты, и по умолчанию он иногда стоит на дате сборки файла. Если переключателя нет, тег можно поправить фильтром в теме, подменив значение на дату модификации записи. Третий вариант, самый честный на небольшом сайте: убрать lastmod вовсе. Отсутствующая подсказка лучше ложной — робот просто будет ходить по своей логике, а не разучиваться доверять вашим датам. И проверьте попутно, откуда берётся дата: если она подтягивается с учётом комментариев, статья будет «обновляться» каждый раз, когда кто-то оставит отзыв, а это ровно та же ложь, только растянутая во времени.
Марьяна Чибисова
Читала, что priority помогает продвигать важные страницы. У меня главная 1.0, разделы 0.8. Есть эффект?
Анатолий Кузнецов автор
Эффекта нет, и это не мнение, а позиция самих поисковиков. Google публично говорил, что игнорирует priority и changefreq, Яндекс их тоже не использует при планировании обхода. Теги остались в протоколе с середины двухтысячных, когда предполагалось, что вебмастер честно расставит приоритеты, — на практике почти все ставят единицу везде, и значение обесценилось. Приоритет для робота задаётся другими вещами: сколько внутренних ссылок ведёт на страницу, на каком расстоянии в кликах она от главной, как часто её содержимое действительно меняется. Хотите поднять важность раздела — дайте на него ссылки из меню, из сквозных блоков и из статей, а не цифру в XML.
Тимофей Лаптухин
Карта открывается в браузере как красивая таблица со стилями. Коллега сказал, что это неправильно и робот такое не читает.
Инга Хлыстова
Магазин на 60 тысяч товаров. Одна карта явно не подойдёт, но как правильно разбить?
Анатолий Кузнецов автор
Делайте индексную карту и под ней отдельные файлы по типам сущностей: товары, категории, бренды, статические страницы, блог. Товары при таком объёме разбивайте дополнительно — по 10–20 тысяч в файл, а не под самый лимит в 50 тысяч: маленькие файлы быстрее генерируются и не упираются в таймаут. Нумеруйте их предсказуемо, чтобы состав файла не менялся при каждой пересборке, иначе робот каждый раз будет видеть новый набор. Отдельно проследите, чтобы товары не в наличии и снятые с продажи выпадали из карты сразу, а не через месяц. И обязательно переведите генерацию в статические файлы по расписанию — динамическая сборка на таком каталоге почти гарантированно оборвётся по таймауту, и Вебмастер напишет «не удалось загрузить» при том, что вручную вы файл откроете нормально.
Прохор Ярыгин
После переезда на HTTPS в карте остались http-адреса. Все редиректятся, сайт работает. Успею поправить через пару месяцев?
Злата Свиридина
Прогнала карту краулером — 140 адресов с canonical на другую страницу. Это всё пагинация и метки. Удалять из карты или чинить canonical?
Анатолий Кузнецов автор
Ничего не чинить, canonical у вас как раз стоит правильно. Из карты эти адреса надо убрать — карта должна перечислять только канонические документы, те, которые вы хотите видеть в поиске отдельными страницами. Пагинация и адреса с метками к таким не относятся: они нужны для навигации и обходятся по ссылкам, но заявлять их роботу как самостоятельные документы незачем. Настраивается это обычно в самом генераторе: у SEO-плагинов есть исключения по типам записей и по маскам адресов. Если гибкой настройки нет, проверьте хотя бы, что в карту не попадают адреса с вопросительным знаком — это отсечёт большую часть меток разом.
Ефим Трубачёв
Правильно ли я понимаю, что если добавить страницу в карту и нажать переобход, она гарантированно попадёт в индекс?
Дарина Кожемякина
В robots.txt указаны две карты от старого и нового плагина. Старая отдаёт 404. Может из-за неё Вебмастер ругаться на новую?
Артемий Немилов
Сравнил дату в карте и дату обновления на самой странице — расходятся на несколько месяцев. Насколько это критично?
Клавдия Кувалдина
Убрала из карты 800 лишних адресов. Через сколько ждать изменений в отчёте по страницам в поиске?