Существуют ли специальные модули для битрикса, которые позволяют обнаружать и сразу удалять битые ссылки на сайте? Вручную довольно длительный процесс получается. Кто встречал подобные, поделитесь вариантами?
29.09.2018 13:32:47
Виктория Русакова, нет. А вот почему нет и быть не может давайте разбираться.
С точки зрения битрикса, сайт это внешняя часть, которая что-то из него получает (какую-то информацию) и как-то отображает. Битрикс знает что у него есть инфоблоки и какие-то пути, по которым можно найти элементы и инфоблоки (пути относительные, это важно). Он не заботиться о том, как сайт это отображает (это дело разработчика сайта) и не проверяет контент внутри (для него это просто хранимая единица - он достал данные и отдал). Соответственно битые ссылки он никак не может проверить, потому что не знает какая ссылка "битая", что является ссылкой и где именно ему нужно искать. Получается необходимо было бы проверить: зайти на главную страницу и собирать оттуда все ссылки, на каждую заходить и проверять существует ли она, не отдается ли что-то отличное от 200/300 статусов и повторять процедуру до тех пор пока ссылки не закончатся и он не обойдет весь сайт. Чтобы вы понимали, компания 1С-Битрикс так тестирует платформу и в 2015 Олег Строкатый (руководитель отдела тестирования) говорил что один тест отрабатывает в целом за 7 дней (а это другой сервер, который проверяет платформу). Нет, конечно вам не нужно проверять все, а достаточно только сайта, но попытка собрать все ссылки средствами сайта и провести эту процедуру на интернет-магазине в 10+ тысяч товаров, не думаю что получиться быстрее чем за 3-4 часа, а ведь это по факту 3-4 часа простоя магазина (может не простоя, но подтупливать будет). А ведь мы разобрали только часть проблемы, ведь этому "чуду" еще нужно каким-то образом понять где именно находится ссылка, что за компонент/код ее выводит и как именно ее нужно заменить. Резюмируя 5-ти минутный поток сознания, краткие выводы: 1) Такого инструмента (поиск + автоматическая замена) думаю не появиться еще лет... не появиться вообще (слишком много затрат, слишком мало профита) 2) Для решения вашей задачи лучше воспользоваться услугами специалистов (или обезьянок, которые найдут и поменяют ссылки)
Голосуй за идеи по развитию API Bitrix:
|
|
|
|
29.09.2018 14:04:20
Во-первых, битой страницу можно считать, если http-запрос к ней возращает ответ, отличный от 200 (при редиректах - следуем за редиректами и считаем конечный код ответа), во-вторых, можно просто анализировать контент статических страниц (напрямую), а также анонсные/подробные описания элементов на предмет поиска ссылок, и среди них искать битые. Учитывая, что на сайте большая часть ссылок - относительные, http-запросы при проверке кода ответа будут быстрыми, времени уйдет относительно немного. Поэтому, считая что подавляющая часть ссылок обычно хранится именно в элементах/разделах инфоблоков и в статических файлах, и если проблема с битыми ссылками действительно имеет значительный масштаб, то такой модуль мог бы действительно помочь. |
|||
|
|
29.09.2018 14:47:31
Согласен, не очень корректная формулировка. Он может быть выполнен, но с рядом значительных оговорок. Но давайте не будем забывать, что нужно не просто найти битые ссылки, но и:
А вот тут уже ряд значительных неопределенностей в рабоче. Удаление или замена? Если замена то на что? Если удаление то как решать, если ссылка в текста (тег а)? И ведь это только верхушка айсберга, потому что нужно еще и локализовать. Ведь не сказано где эта ссылка может быть - включаемая область, раздел инфоблока, хардкод в шаблоне компонента. Если рассматривать сугубо одно поле информационного блока, то такое можно реализовать, но подобных вещей я не встречал, тем более в модулях. P.S. Я не знаю что должно случиться, чтобы на сайте образовалось так много битых ссылок сразу. Они наверное должны исчисляться сотнями или тысячами, потому что 70 ссылок вполне реально поправить
Голосуй за идеи по развитию API Bitrix:
|
|||||
|
|
29.09.2018 16:22:52
Да, согласен, в большинстве случаев лучше вручную. С помощью, например, Xenu.
|
||||
|
|
|||