Почему sitemap.xml перестал обновляться

sitemap.xml обычно вспоминают, когда поисковая система показывает старые URL или новые страницы долго не появляются в обходе. При этом проблема не всегда в SEO. Карта сайта может не обновляться из-за cron, прав на запись, ошибки в генераторе, старого кэша или неправильного пути к файлу.

Хорошая диагностика начинается с простого вопроса: sitemap не генерируется вообще или генерируется, но не там, не так и не с теми адресами.

Проверить доступность файла

Сначала нужно открыть sitemap.xml как обычный URL и посмотреть код ответа. Файл должен отдавать 200 и XML-содержимое.

curl -I https://example.ru/sitemap.xml
curl https://example.ru/sitemap.xml | head

Если вместо XML приходит HTML, страница авторизации, редирект на главную или 404, проблема может быть в маршрутах, location nginx или фактическом расположении файла.

Проверить дату изменения

Если sitemap лежит физическим файлом, на сервере можно посмотреть дату изменения. Часто сразу видно, что файл не обновлялся несколько месяцев.

ls -lh web/sitemap.xml
stat web/sitemap.xml

Если sitemap создаётся динамически через контроллер, даты файла не будет. Тогда нужно смотреть код генератора, кэш и URL, который отдаёт XML.

Cron и команда генерации

Многие проекты генерируют sitemap по расписанию. Тогда первым делом проверяют cron и возможность запустить команду вручную.

crontab -l
php yii sitemap/generate

В cron желательно писать вывод команды в лог. Без этого сложно понять, запускалась ли генерация вообще.

0 2 * * * cd /var/www/site.ru && /usr/bin/php yii sitemap/generate >> runtime/logs/sitemap.log 2>&1

После ручного запуска нужно открыть лог и проверить, сколько URL попало в карту сайта.

tail -n 100 runtime/logs/sitemap.log
tail -n 100 runtime/logs/app.log

Права на запись

Если команда запускается, но файл не меняется, возможно, приложению нельзя записывать в директорию. Особенно часто это происходит после переноса сайта или ручного создания файла от root.

ls -la web/sitemap.xml
ls -la web

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

chown www-data:www-data web/sitemap.xml
chmod ug+rw web/sitemap.xml

Проверить URL внутри sitemap

Иногда файл обновляется, но содержит неправильные адреса. Например, старый домен, http вместо https, тестовый поддомен или URL закрытых разделов.

grep "http://" web/sitemap.xml
grep "test" web/sitemap.xml
grep "localhost" web/sitemap.xml

Если домен берётся из конфига, нужно проверить параметры приложения. В Yii2 это может быть params.php, .env или настройка urlManager.

'urlManager' => [
    'hostInfo' => 'https://example.ru',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
],

Не добавлять в sitemap всё подряд

Карта сайта должна содержать полезные индексируемые URL. В неё не стоит добавлять страницы корзины, поиска, фильтры с бесконечными параметрами, личный кабинет и служебные разделы.

  • главная страница;
  • основные разделы;
  • карточки товаров или услуг;
  • статьи блога;
  • статичные посадочные страницы.

Если sitemap формируется из базы, в выборке должны быть условия по статусу публикации и доступности страницы.

$posts = BlogPost::find()
    ->where(['status' => 'published'])
    ->andWhere(['<=', 'published_at', time()])
    ->orderBy(['updated_at' => SORT_DESC])
    ->all();

Большие карты сайта

Если URL много, один sitemap лучше разделить на несколько файлов. Это упрощает проверку и снижает риск, что ошибка в одной группе страниц испортит весь файл.

sitemap-index.xml
sitemap-pages.xml
sitemap-blog.xml
sitemap-products.xml

В robots.txt при этом указывают индекс или основной sitemap:

User-agent: *
Disallow: /admin/

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

Чек-лист диагностики

  1. Проверить HTTP-код /sitemap.xml.
  2. Проверить, XML ли отдаётся по URL.
  3. Посмотреть дату изменения файла.
  4. Запустить генератор вручную.
  5. Проверить cron и лог генерации.
  6. Проверить права на файл и директорию.
  7. Проверить домен и протокол внутри URL.
  8. Убедиться, что в карту попадают только опубликованные страницы.

С sitemap.xml редко бывают сложные ошибки. Чаще это забытый cron, старый домен в конфиге или файл, который однажды создали вручную и больше не смогли перезаписать. Поэтому начинать лучше с простых технических проверок.

Комментарии (0)

Пока нет комментариев. Будьте первым!