Почему 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
Чек-лист диагностики
- Проверить HTTP-код /sitemap.xml.
- Проверить, XML ли отдаётся по URL.
- Посмотреть дату изменения файла.
- Запустить генератор вручную.
- Проверить cron и лог генерации.
- Проверить права на файл и директорию.
- Проверить домен и протокол внутри URL.
- Убедиться, что в карту попадают только опубликованные страницы.
С sitemap.xml редко бывают сложные ошибки. Чаще это забытый cron, старый домен в конфиге или файл, который однажды создали вручную и больше не смогли перезаписать. Поэтому начинать лучше с простых технических проверок.
Комментарии (0)
Пока нет комментариев. Будьте первым!