Проблема с генерацией sitemap.xml
Проблема: настроили карту сайта, нажали кнопку "Сохранить и запустить" и генерация зависла - висит неподвижно индикатор и крутится лоадер на кнопке.
Ошибка редкая, я с ней сталкивалась всего дважды и на второй раз решила записать, чтобы потом не вспоминать, как лечить.
Если открыть консоль, то можно увидеть, что браузер отправляет на сайт бесконечные запросы к /bitrix/services/main/ajax.php?action=seo.api.sitemap.job.do
Если перезагрузить страницу "Настройка sitemap" или даже уйти с нее, а потом вернуться, картина останется такая же.
Решение: идем в админке в Настройки > Производительность > Таблицы
Находим таблицу seo_sitemap_job, заходим в нее и видим одну запись, в которой поле RUNNING равно 'Y'. Если вы это видите, значит, когда-то при прошлой перегенерации что-то пошло не так и генерация карты заблокирована.
Редактируем запись - в поле RUNNING пишем 'N' и сохраняем.
Теперь идем на страницу "Настройка sitemap" и карта моментально создается или обновляется.
Upd 14.10.2024: на этом проекте ошибка всплывала при автогенерации сайта. Решена в последних обновлениях битрикса
Модуль Поисковая оптимизация (seo)
Версия 24.300.0
Исправлена ошибка зависания генерации карты сайта если отсутствуют модули Форум или Инфоблоки
Версия 24.200.0
Исправлена возможная ошибка генерации карты сайта.
Версия 24.100.0
Исправлена ошибка генерации карты сайта, если агенты выполняются на cron'е.
Ставьте обновления и все заработает.
Но на моем проекте нашелся еще один нюанс.
Я установила на сайте последние обновления и протестировала автогенерацию карты сайта. Все отработало, ничего не зависло, но из карты сайта пропал один из инфоблоков. При запуске карты вручную он включался без проблем, при автогенерации пропадал.
Причина такого поведения оказалась в том, что в правах доступа к этому инфоблоку для всех стояло "нет доступа". Инфоблок технический, в нем формируются дополнительные ссылки для карты сайта. При создании карты администратором вручную из админки он доступен, а для агента нет.
Инфоблок пропадал из списка после выборки \CIBlock::GetList. Логично - выбирать для карты сайта только доступные для всех инфоблоки.
#лайфхакиБитрикс #админка_битрикс
31.07.2024