1С-Битрикс: автогенерация — danger
1С-Битрикс: автогенерация sitemap.xml — danger!
Уже не помню в какой версии, но в БУС появилась замечательная штука — автогенерация карты сайта из секций и элементов инфоблоков (screenshot 1). Эту функцию давно ждали все, кто хотел держать карту сайта в актуальном состоянии.
Автогенератор действительно работает и до последнего времени он не вызывал каких-то вопросов.
Вопросов бы и не возникло, но у нас появился проект на котором постоянно активируются и деактивируются элементы инфоблоков.
Кейс: медленно работает обмен с 1с, настолько медленно что падает по таймауту в полчаса.
Казалось бы, причем тут sitemap.xml и SEO модуль?
Пришлось разбираться, обмен стал тупить как нештатный, так и родной, изменений в нештатном обмене за последние 2 месяца не производилось, система не обновлялась — из этого можно сделать вывод что косяк находятся за пределами непосредственно обмена.
Мы проделали еще ряд тестов, посносили кеши, просмотрели логи на предмет ошибок, но не нашли ровным счетом ничего чтобы могло приблизить к разгадке.
Но как это обычно и бывает, за разгадками мы лезем сразу в глубь, не замечая при этом того что творится под носом!
В один прекрасный момент кто-то обратил внимание на sitemap.xml, точнее на их количество и суммарный вес.
Количество файлов не вспомню, но их было много (screenshot 2), а суммарный вес превышал 500 мегабайт!
Как так вышло? Oo
Все дело в SEO модуле и его классе генерации и апдейта карты сайта.
Каждый раз когда элемент инфоблока деактивируется или удаляется, в карте сайта строка с url этого элемента заменяется на пробелы! (screenshot 3)
И ладно бы они удалялись из этих карт сайта, нет! Эти пробелы останутся в карте сайта до тех пор пока не будет запущена полная перегенерация всех карт сайта!
Неожиданно да? Автоматическая генерация карты сайта = автоматическое забивание места на хосте =)
Тут кстати и нарисовался ответ на вопрос относительно упавшей производительности обмена, пока SEO модуль прочесывал полгига xml файлов, проходила целая вечность.
Я подумал, что проблема может быть решена в более поздних версиях БУС, но в 16-й версии все ровно также!
Недолго думая я отключил автогенерацию карты сайта, сгенерил ее руками и пошел писать в саппорт. (screenshot 4)
Screenshot 4.
Мягко говоря ответ поддержки меня удивил. Получается что пробелы из карты сайта не удаляются намерено и сделано это для того чтобы избежать лишней нагрузки на сервер. Но то что это накладывает отпечаток на последующую генерацию карты сайта никто не задумался? Или хотя бы предупреждение повесить, мол — «будьте осторожны и периодически запускайте генерацию карты сайта руками, а то она автоматически раздувается до неприличных размеров».
Если у вас часто деактивируются и удаляются элементы инфоблока то прямо сейчас отключайте автогенерацию карты сайта из инфоблоков!
Ну и ждем правок в SEO модуле, из моего тикета сделали заявку в отдел разработки, ждать правда наверняка придется долго.
Update от 22.10.2016
Спустя 3 месяца и 10 дней мой автоматический тикет был закрыт с пометкой «не является ошибкой».
Все нормально парни! Живем как и раньше, sitemap.xml в 500 мегабайт это норма!
Screenshot 5.
Оптимизируем индекс
Инфоблоки
Часто наблюдаю наплевательское отношение к модулю поиска на сайте. Народ очень любит добавлять новые инфоблоки на сайт, не особо прибегая к его настройке. Например — создали инфоблок для хранения какой-то промежуточной сущности (которая не будет иметь адреса на сайте), но при этом разрешили его индексацию, которая включена по-умолчанию.
Вот и яркий пример — кто-то создал инфоблок, который будет хранить запросы на обратный звонок. При этом оставил заполненными по-умолчанию поля с шаблонами URL адресов сущностей, а также галочки «Индексировать разделы» и «Индексировать элементы» для модуля поиска. Запомните — если сущность не имеет адреса и вы не хотите использовать ее для отображения в публичной части сайта, нужно убирать эти настройки, иначе записи будут попадать в поисковый индекс, а значит и в sitemap попадут, чего нам в данном случае не нужно.
Старайтесь вообще использовать инфоблоки для хранения только тех сущностей, которые будут иметь URL на сайте. Для всех других типов данных можно использовать HL-блоки или свои таблицы в БД, к которым можно прицепить ORM.
Главный модуль и управление структурой
Если с инфоблоками все просто, то тут придется немного повозиться. Нужно понимать, что при индексации файлов битрикс рекурсивно пробегает по всем доступным для чтения директориям и проверяет права на доступ к файлам. Поэтому надо сначала удалить все лишние файлы (а их бывает часто много), после чего закрыть доступ к тем файлам, которые не должны быть доступны через поиск.
Создание sitemap.xml
Чтобы создать sitemap.xml, перейдите на вкладку “Администрирование” в панели управления сайтом, а затем откройте раздел “Настройки”/“Поиск”/Google Sitemap:
Далее вам предстоит заполнить несколько полей на странице “Параметры создания”. Обратите внимание на то, что в целом достаточно выбрать сайт, остальные параметры можно не менять:
Обратите внимание на то, что если в данный момент вы не зарегистрированы в программе Google Sitemaps, вам нужно:
авторизоваться на сайте сервиса;
подтвердите право собственности на сайт:
После того, как вы выполните действия, описанные выше, в папке сайта появятся три новых файла:
sitemap_index.xml (файлы, которые будут индексировать поисковые роботы);
sitemap_errors.xml (перечень ошибочных ссылок);
sitemap_000.xml (файл, в котором сохраняются ссылки):
Надежная защита от взлома и кражи информации с сайта. Целый ряд технических решений по защите всей системы и веб-приложений. Это многоуровневая безопасность ваших интернет-проектов от большинства известных угроз.
Технология, позволяющая быстро разрабатывать мобильные приложения под iOS и Android для сайтов, созданных на платформе «1С-Битрикс».
Приложения публикуются в AppStore и Google Play.
Генерация Sitemap.xml в Битрикс
Скажу сразу, что мы будем рассматривать на примере продукта «1С Битрикс: Управление сайтом 16», в более ранних версиях, интерфейс и путь могут слегка отличаться (например, с 13 или 14 версией). Разработчики заранее побеспокоились об оптимизации, и вставил в функционал системы генерацию карты сайта в автоматическом режиме. Для того, что бы воспользоваться данным функционалом, перейдем по следующему пути: Панель администратора => Маркетинг => Поисковая оптимизация => Настройка sitemap.xml
Жмем добавить (в случае многосайтовости, выбираем сайт который нам необходим).
В первой вкладке выбираем основные настройки, обязательно необходимо указать в последнем поле sitemap.xml (или просто, оставить дефолтные настройки). Так-же не забываем указывать «Добавить правило в Robots.txt после генерации», это будет указывать поисковым роботам о том, что у нас есть карта сайта, и укажет, где именно она находится.
Далее мы переходим к следующей вкладке, которая отвечает за настройку файлов и структуру сайтов. Под файлами, подразумеваются такие страницы, как contacts.php (Контакты), about.php (О нас) и другие страницы, которые размещены не как разделы, а именно отдельные страницы. Тут довольно просто, можно разобраться без наглядного примера.
Следующая вкладка, это настройка Инфоблоков. Самая основная часть, скажем так.
В данной вкладке, мы настраиваем информационные блоки, которые будут указаны в карте сайта. Многие даже не открывают данную вкладку, что является грубой ошибкой. Обязательно проверьте наличии технических информационных блоков (например, для вывода контактов, или другой технической, вспомогательной информации) и проверьте на наличие тестовых блоков. Например, если вы покупали готовое решение, то могли не заметить, либо намеренно оставить демонстрационные данные. Ни в коем случае не стоит допускать того, что бы данная информация вошла в поисковый индекс.
На этом, мы можем закончить. Осталось сохранить и запустить. После чего карта сайта будет доступна по адресу http://ваш_сайт.ру/sitemap.xml.
Стоит отметить, что система сделана таким образом, что она формирует карту для каждого блока по отдельности, а в общем файле sitemap.xml, указывает ссылку на каждый блок. Методом экспериментов было выявлено, что данная структура не на столько эффективна, если на вашем сайте не большое количество страниц. В таком случае, проще будет обратиться к онлайн-генераторам. Если же у Вас большой объем информации, то данный вид будет довольно удобным, так как информация будет структурированной и поисковому роботу не придется загружать один длинный список адресов.
Генерация Google Sitemap
Генерация Google Sitemap происходит гораздо проще. Следуем по пути — Административная панель => Настройки => Поиск => Google Sitemap. Жмем «Создать» и все. Карта доступна по адресу /sitemap_index.xml
Добавление карты сайта в кабинеты для вебмастеров
После того, как карта сайта была сгенерированна, ее обязательно стоит добавить в кабинеты для вебмастеров (вы ведь уже добавили туда свой сайт?!). Для ПС Яндекс, это можно сделать тут => https://webmaster.yandex.ua/site/map.xml , для ПС Google, добавляем тут => https://www.google.com/webmasters/tools/sitemap-list
Это поможет ускорить индексацию вашего сайта. А залог успеха — это правильная и быстрая индексация страниц поисковыми системами.
Создание Sitemap.xml автоматизировано в 1С-Битрикс. С помощью формы вы можете указать страницы, элементы и разделы инфоблоков для индексации поисковыми системами. Выполняется по инструкции курса «Продвижение сайта и Маркетинг» — Генерация файла карты сайта.
В стандартной настройке 1С-Битрикс существует шаблон с набором команд для сайтов. Вы можете создать и отредактировать файл прямо в административной части платформы. Выполняется по инструкции курса «Продвижение сайта и Маркетинг» — Генератор robots.txt.
Генерация sitemap в WordPress
Для генерации карты сайта в WordPress потребуется установить плагин. Плагинов множество, и вы можете поэкспериментировать и выбрать для себя наиболее удобный.
Обычно вебмастера используют комплексные SEO-плагины, которые помимо сотни других функций могут и генерировать sitemap. Самые известные из них:
- Yoast SEO:
- All In One SEO Pack;
- The SEO Framework.
Есть несколько узконаправленных плагинов: Google XML Sitemaps, Sitemap Generator и другие.
Рассмотрим создание карты сайта на примере Yoast SEO. Плагин генерирует карту сразу после установки, эта функция включена по умолчанию.
Чтобы ее отключить или изменить настройки, вы можете пройти на вкладку SEO, где увидите XML Sitemaps. В разных версиях WordPress эти настройки отображаются по-разному.
В Yoast SEO до версии WordPress 4.9.10:
В Yoast SEO от версии WordPress 5.0 и выше:
Интересно, что Yoast SEO создает сразу карту для страниц, изображений и видео. Вот так выглядит главная карта сайта:
Все ссылки кликабельны и ведут на отдельную карту. Карта имеет вид, который удобно воспринимать человеку, что также является преимуществом.
Теперь рассмотрим создание карты сайта на примере плагина Google XML Sitemaps:
- Установите и активируйте плагин из официальной директории WordPress:
- После активации плагин автоматически генерирует карту сайта.
- Чтобы перейти к настройкам плагина, найдите вкладку Settings, далее кликните на XML Sitemap. Здесь можно изменить приоритет публикаций/страниц, исключить определенные страницы из индекса и применить другие настройки:
Настраивайте по своему усмотрению и используйте возможности CMS вашего веб-ресурса на полную.