Модуль: Поисковая оптимизация (SEO) – версия 14.0.2
В разделе «Сервисы» появился новый пункт «Поисковая оптимизация», в котором собраны возможности по SEO, влияющие на весь сайт:
Переходим к разделу «Настройка sitemap.xml»:
[spoiler]Добавляем сайт, для которого будем настраивать sitemap.xml:
Попадаем на первую вкладку «Настройки»:
В поле «Название» может быть любой текст, удобный именно вам, используется в списке ваших файлов для различных сайтов, и актуально только тем, у кого на одной лицензии много сайтов.
Значение для поля «Адрес карты сайта» система пытается получить из файла robots.txt. Если поле заполнено, значит файл уже создан и система нашла его. Если вы хотите хранить файлы в другом месте или с другим названием, то можете сменить настройки.
Если вы не уверены, что ссылка на файл прописана в файле robots.txt или её там точно нет, вы можете отметить галочку «Добавить правило в robots.txt после генерации», и ссылка будет добавлена. Если ссылка на файл уже создана и новые настройки совпадают с ней, дублирования не произойдёт, поэтому данная галочка может быть выбрана.
«Последний запуск» показывает, когда последний раз происходила полная перегенерация sitemap.xml. Так как мы только начали настройку, у нас стоит значение «никогда».
Переходим на вкладку «Файлы»:
Настройки по файлам, которые должны индексироваться, будут содержаться в отдельном файле, который будет подключаться в sitemap.xml, и вы можете задать удобное для вас название в поле «Имя файла карты сайта с данными о файлах»
Вы можете выбрать с каким представление структуры сайта вам удобнее работать (логическая или файловая структура).
Мне удобней использовать «Файлы и папки», переключаюсь на такое представление:
Тут вы можете выбрать файлы и папки, которые должны быть добавлены в список для индексации.
Переходим к последней вкладке «Инфоблоки»:
На вкладке показаны все инфоблоки, привязанные к сайту. Вы можете настроить данные из каких инфоблоков должны попадать в индексацию.
Столбец «Инфоблок» показывает инфоблок, с которым вы можете работать.
Установленная опция «Автогенерация» будет автоматически добавлять все вновь созданные элементы в список для индексацит; при добавление будут проверятся все правила, заданные на данный инфоблок.
Столбец «Список» - для индексного файла инфоблока и подстановки путей, будет взят путь из настроек инфоблока:
Столбец «Секция» даёт возможность выбрать нужные для индексирования секции внутри инфоблока. Если галочка не активна, значит, у инфоблока нет секций:
Столбец «Элементы» - установленная галочка говорит системе, что нужно индексировать все элементы, входящие в данную секцию. Актуально для каталогов с большой вложенностью совместно с выбором секций.
Или подробнее (по другому) не для слабонервных:
- "элементы" - это детальные страницы элементов.
- "секция" - это индексная страница секции.
- "список" - это индексная страница всего инфоблока
Если при этом не выбрано "элементы" у секции, то мы выбираем все элементы инфоблока кроме тех, что живут в этой секции и всех её дочерних.
Если выбрано "элементы" у секции, дочерней по отношению к той, у которой мы сняли галочку "элементы", то попадут все элементы инфоблока кроме тех, что живут в не отмеченной секции, но добавятся дочерние отмеченной.
Настройки выбраны:
Мы можем «Сохранить» их без запуска генерации файлов, а можем «Сохранить и запустить» - инициируя запуск генерации по заданным нами правилам, выберем «Сохранить»:
Мы перешли в список, в котором видно, что настройки сохранены, но мы ни разу не запускали генерацию файлов. Запускаем нажимая - "Запустить":
Генерация закончена, и мы можем увидеть созданные файлы:
Файлов теперь несколько, в основном файле (sitemap.xml) хранится информация обо всех файлах, которые в него входят. Сделано это для ускорения автогенерации вновь создаваемых элементов и удобства отслеживания изменений на больших проектах.
Откроем файл, в котором содержатся данные из инфоблока товаров:
Мы видим ссылки на индексирования конкретных страниц, все сработало замечательно.
Но все это было бы не таким удобным, если бы система не умела автоматически добавлять туда записи при создание нового товара. Создадим товар с название «Для теста» и проверим добавиться ли он автоматически в файл sitemap_iblock_9.xml (где iblock_9 - говорит нам, что тут хранятся данные из инфоблока с ID=9):
Товар создан и получил символьный код «for-the-dough», посмотрим добавление записи в файле sitemap_iblock_9.xml:
Запись добавилась!
На момент публикации данной статьи обновление находится в статусе beta. Отследить статус обновления можете на странице
Спасибо, ждём вопросов и замечаний по новому функционалу.
.
Есть события или фильтры? Юзкейс: инфоблоки "Города" + "Новости", каждый город привязан к поддомену, новость привязана к городу, показ новостей в публичке банально фильтруется через PROPERTY_city => 123, каждый город видит своё или только общее.
Как сделать аналогичное для карты для каждого сайта?
Ваша задача несколько кастомная и достаточно не тривиальная, сохранить настройки, причем как то узнать, что все таки инфоблок может быть другой, публичка другая и т.п. сложности. Получается вы скопировали и все заново все равно выбрали, тогда зачем копировать.
Поэтому как не печально, но придется вам посидеть с ручными настройками, но главное это нужно будет проделать один раз, дальше все будет строится автоматически.
Теперь больше всего интересует второй вопрос - фильтрация элементов при добавление в карту.
Не получится там сделать централизованного события на фильтр.
Можно сделать вот что:
1. отказаться от автообновления инфоблока
2. скопировать куда-нить в админку своего модуля файл seo/admin/seo_sitemap_run.php (дальше можно просто переделать ссылку на него в /bitrix/admin - маловероятно, что она будет меняться в ближайшие много лет) и языковой файл seo/lang/ru/admin/seo_sitemap.php
3. в скопированном файле найти строку
$dbIblockResult = CIBlockElement::GetList(
и поправить там фильтр, но это плохой вариант, но других нет.
Мне очень сложно поверить, что это задача невыполнима. Я бы легче поверил, что нет желания (сейчас, в ближайшее время, либо вообще).
Поддержка просто втирает очки. Событие (смотрел по инфоблокам) добавить вполне реально. Для этого нужно внести изменения в методы SitemapIblock::actionUpdate, SitemapIblock::actionDelete, SitemapIblock::actionAdd. Нужно то передать имеющуюся на начало исполнения метода информацию - наименование действия и $arFields. Но в поддержке ответили, что это титанически трудно выполнить.
Альтернатива без событий - переопределение этого класса (SitemapIblock), в указанных методах (либо раньше по цепочке вызовов) добавить свою проверку и при ее прохождении вызвать реализацию базового класса. Слаба Богу что методы не финальные и могут быть переопределены. За это комплимент разработчикам (код вообще приятно читать, спасибо).
Разумеется, при использовании альтернативы нужно отключить стандартный функционал (генерацию и автогенерацию карты сайта для определенных инфоблоков). При этом автогенерация работать в итоге будет, а генерация через админку - нет! Вот это сильно расстраивает. Лучше все-таки найти мужество и добавить события.
Пока только "Unknown site!" получаю, пытаясь что-то отправить. (Процедуру верификации в Гугле и Яндексе прошел, коды ввел).
P.S. ссылки на разделы на странице работы с инфоблоком в рамках генерации карты сайта битые (не указывается тип ИБ).
По проблеме, проверим и исправим если есть проблема.
Объясню суть.
Есть иерархическая структура разделов в рамках ИБ, который я пытаюсь включить в sitemap. Структура очень большая и разветвленная. Имеет следующий вид:
Р1
Р11
Р111
Р112
Р113
Р114
...
Р12
Р121
Р122
Р123
Р124
...
...
Р1N
Р1N1
Р1N2
Р1N3
Р1N4
...
P2
...
PN
Задача на пустить в sitemap разделы вида Р111, ... РNNN (третьего уровня вложенности).
Общее количество секций в структуре: 3945
Общее количество секций 1 уровня в структуре: 21
Общее количество секций 2 уровня в структуре: 218
Общее количество секций 3 уровня в структуре: 3706
При последовательном исключении из структуры секций третьего уровня в количестве 1734 все ок.
При увеличении их до 2006 - все слетает.
2006 и 1734 - количество секций, обусловленное последовательным исключением секций третьего уровня путем обработки соответствующих секций второго уровня.
P.S. с ТП не писал, т.к. закономерность проявилась в 2х проектах. Вероятно имеет место быть какая-то системная ошибка.
P.P.S. Как я писал
Большая просьба написать тикет в техническую поддержку и дать доступ к проекту, после этого скинуть номер тикета на myth@bitrix.ru мы посмотрим, что происходит, чтобы оптимизировать эту часть.
сейчас доступно только
люди
группы
блоги
а раньше создавало и
Постепенно старый инструмент уйдет из новых версий продукта и останется только в старых инсталляциях, но пока мы не готовы убрать старую схему формирования карты сайта.
У меня пара файлов получились больше 10Мб. Например sitemap_files.xml имеет 10,4Мб в нем все файлы! Думаю более 100 тыс штук. т.е. Яндекс даже смотреть его не будет. И что делать? До этого обновления все как то правильно работало.
Функционал новый и находится в стадии улучшения. Вы можете как и раньше пользоваться старым функционалом, который строил sitemap.xml на основе поиска, он не куда не делся, новый функционал постепенно его будет замещать.
Кроме того сейчас у БУС получается два механизма генерации карты сайта, было бы здорово оставить один !
Да в данный момент две схемы генерации, вторая схема генерации пока не полная, она не работает с форумами, блогами, не умела (на днях выйдет апдейт) делить файлы по 10 мегабайт, не умеет пока апдейтить информацию в сайтмапе при деактивации товара или его удаление.
Все это мы хотим закончить к 14,5 релизу и тогда можно будет рассмотреть скрытие генерации сайтмапа на основе поиска, или же оставить для совместимости и убрать только в новых дистрибутивах.
Битрикс с этой ситуацией в публичке справляется на ура - определение сайта проходит по домену.
Но сейчас всплыл вопрос с robots.txt.
Да, имена файлов самой карты я могу указать в настройках. Но хорошо еще поместить ссылку в robots.txt ...
А этот файл один на оба сайта.
Решением был бы динамический robots.txt (
Здесь бы помогла настройка имени файла с robots.txt также как и sitemap - индивидуально для каждого сайта.
Попробуйте обратится в наше ТП, что бы ребята посмотрели в чем проблема.
Речь идет о настройке группы региональных сайтов с общими исходниками. Различаются они только доменами, указывающими на конкретный регион. В итоге шаблон сайта общий, файлы в публичной части общие, разные только SITE_ID и соответствующие данные для выбора информации, вычисленные из SITE_ID (это ИД инфоблоков).
В этой конфигурации все хорошо, пока не доходит дело до robots.txt. Он тоже общий, но в нем должна быть своя директива для sitemap у каждого регионального сайта. Чисто программно это реализовать можно сделав robots.txt PHP скриптом. Но для этого нужно, чтобы PHP скрипт мог подключить готовый robots.txt как текстовый файл, индивидуальный для каждого сайта.
Но это сейчас не обеспечишь, т.к. админка пишет robots.txt всегда в один файл, а нужно что-то типа этого - robots_s1.txt и robots_s2.txt.
Настроить имена этих файлов сейчас нельзя, а файлов sitemap.xml - можно.
(у нас есть проект с уже более 50 регионами, на каждом свой уникальный robots и свой уникальный контент)
все распределение robots.txt желательно выполнять на уровне nging (выигрывают многодоменные решения или решения, отличающиеся доменами)
и не дай боже пропустить это через апач + PHP (это по поводу решений на базе 404 или на базе обработки robot автоматизированными скриптами)
Так как robots.txt это наиболее популярный файл, запрашиваемый всеми поисковыми системами и неоднократно.
Просто прикиньте, что на самый мизерный файл в системе вы убиваете как минимум одного попугая Битрикс (а у некоторыйх их всего то 30).
На одном из проектов, пропустив манипуляции с роботсом через ядро Битрикс мы получили допангрузку на сайт +30-50%
А в пиковые часы получали неоправданный коллапс
При переводе распределения региональных robots.txt только на nginx система была стабилизирована
а уж распределить на уровне nginx свои robots.txt в зависимости от домена - раз плюнуть
межрегиональных проектов у нас уже далеко не один
и везде: одна и та же технология robots.txt с табу на apache+PHP
Ее смысл не теряется от этого - нужны отдельные файлы robots.txt для каждого сайта. Дальше вступает в игру location от nginx.
В итоге получаем нормальную настройку robots.txt для каждого из сайтов, использующих общий DOCUMENT_ROOT + SITE_DIR и эффективность отдачи этого файла в сеть.
Странно что идею так замочили, можно было просто поправить в этом вопросе. Смысл исходной постановки не зависит от способа дальнейшей настройки Apache/nginx.
Такие проекты - уникальность
Сталкиваются с ними единицы.
Ведь вопрос только в возможности выбора имени сохраняемого файла.
К тому же эта возможность уже есть на sitemap. Ее надо перенести и на robots.txt, т.к. это очень тесно связанные вещи.
Не понимаю как можно проектировать модуль без событий!
Скажите, пожалуйста, а при добавлении элементов в инфоблок через стандартный API (не через админку), будет происходить обновление sitemap? И как это повлияет на производительность?
У меня ежедневно происходит заливка номенклатуры из 1С. Хотелось бы автоматом обновлять sitemap.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>
<url><loc>
<url><loc>
</urlset>
Т.е. loc отправляет в корень сайта.
Аналогично формируется sitemap.xml
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap><loc>
<sitemap><loc>
</sitemapindex>
Редактировать файлы приходится вручную.
Можно ли сделать данный функционал функциональным???!
PS: Установлены самые свежие обновления.
protected function getFileUrl(File $f)
{
...
if (substr($this->path, 0, strlen($this->documentRoot)) === Path::normalize($this->documentRoot))
{
$path = '/'.substr($f->getPath(), strlen($this->documentRoot));
}
//$path = Path::convertLogicalToUri($path);
...
}
PS: php+win+iis
PPS: seo 14.5.0
Почему гугл и яндекс не индексирует изображения из битрикса? Год назад переехали на эту цмс, и год не было индексации изображений поисковиками.
Недавно поправил robot.txt, в нем почему то был запрет на /upload/
Вот так выглядит созданный сайтмап средствами битрикса:
А сайтмап созданный средствами word press, например, подает и интернет страницы, и изображения.
Вот так выглядит стартовый набор robots.txt в платформе, не каких запретов индексации upload нет.
В платформе очень гибкие возможности управления индексацией и файлами robots.txt и sitemap.xml ознакомьтесь с текущими двумя статьями и все у вас будет отлично на сайте.
Вопрос был про сайтмап.
Вот сайтмап гугла, индексируются страницы только:
тогда как другие cms скармливают гуглу с изображениями сайтмап:
сайтмап от битрикса:
сайтмап от ворд пресс, гугл картинки сразу видит:
ссылки генерируются вот такого вида:
Подскажите, с чем связана моя проблема
в карту вставляется lastmod равный внесению изменений в название/свойства секции, но ведь это не так: на странице секции всё время меняются элементы, добавляются, удаляются старые.
В результате, если структура каталога сложилась два года назад - в карте будет дата изменения двухгодичной давности... внезависимости от того, что содержимое сраницы http://сайт/каталог/секция зависит от элементов, а не от даты правки названия и описания..
В модуле поиска мы можем повлиять на запись, а здесь?
жесткая привязка к путям из настроек инфоблока иногда мешает
Ни повлиять на формирование элементов, ни перекрыть(переписать) адреса или исключить выборочно элементы из сайтмепа нельзя
а ведь достаточно было бы события для нас в seo_sitemap_run.php перед такими плюшками, как
Очень понравилась возможность выбора статики
Но с другой: а чем этот сайтмеп отличен от старого "поискового" в инфоблоках?
Управлять его составом никак не получится?
Сделайте пожалуйста события, на основе которого вышеуказанная плюшка вызывалась бы или нет.
А также в котором можо было бы повлиять на url
И не только для элементов
Вообще для всех сущностей
А пока придется поработать со старым заслуженным сайтмепом из модуля поиск
А вот событие точно не помешало бы, присоединяюсь. Можно было бы и вопрос с lastmod у разделов снять.
Натравите SEO специалистов на сайт и вы получите список
1. Страниц по которым надо навести ревизию в индексе для публичной части
2. страниц, которые никак не должны светиться в индесе для поисковиков
Итог:
на 1 мы можем повлиять - не проблема
2. - сейчас автоматика с типовым мировоззрением. Неразрешимая проблема. Выход: использование новой сайтмапа со сломанным ядром (согласую с заказчиком) или ... по старинке.
Скажу честно, если бы не автогенерация, сразу бы забил на новинку.
Добавлять её в обычную карту не вариант - разметка разная в sitemap_index.xml все карты находятся в теге <sitemap>, а в sitemap_000.xml уже в <url>.
Т.е. есть семантическая разница.
Технически добавить все документы согласно настройкам не удаётся, нужна возможность ручного добавления КАРТЫ помимо автоматических.
Как быть?
P.S. добавить свой сайтмеп в webmaster.yandex.ru (помимо уже имеющихся) SEOшники отвергают.
=(
<?xml version="1.0" encoding="UTF-8" ?>
" <loc>
<lastmod>2014-10-01T14:05:54+04:00</lastmod>
</url>
<url>
<loc>
<lastmod>2014-10-01T14:06:35+04:00</lastmod>
</url>
<url>
<loc>
<lastmod>2014-10-01T14:06:35+04:00</lastmod>
</url>
<url>
"