Настраиваем правильную отработку 404 ошибки в битриксе 19


В интернете данный вопрос поднимался не раз. Перечитал изрядно статей, но реально помог только вот этот материал: http://klondike-studio.ru/blog/develop/1cbitrix-404-not-found.php

Хотя даже сделав все по инструкции, желаемого результата добиться не удалось(((. Пришлось пораскинуть мозгами, и вооружившись командой print backtrace, отловить негодяйскую 404 ошибку и заставить ее работать как положено.

Собственно, проблема:

Для непосвященных — в битриксе 404 ошибка отрабатывается весьма специфически — неправильный адрес со статических страниц корректно перебрасывает на страницу 404.php, при этом сохраняя неправильный URL в адресной строке браузера. То есть все по seo.

А вот если неправильный адрес начинается с раздела инфоблока или каталога, то сервер отдаст браузеру 404 статус страницы (и то при определенных настройка инфоблока, о которых ниже), но 404 страницу не покажет, а покажет корневую страницу инфоблока или каталога (но все-таки сохранит неправильный URL в адресной строке).

На что стоит обратить внимание:

1. сам файл 404.php у меня выглядит примерно так (на самом деле стандартно выглядит):

2. В .htaccess должна быть вот такая строчка:

тех. отступление:

Попробуем сэмулировать 404 ошибку с какой-нибудь статической страницы и отловить результат через команду debug_print_backtrace();

Skrinshot-2015-01-01-14.35.46

 

Смотрим файл — видим там строку с инклюдом 404 страницы. Она вызывается, очевидно, в том случае, если страница не найдена в структуре файлов и папок, а также в файле urlrewrite.php в корне сайта, где как раз описаны все наши инфоблоки и каталоги (для правильной работы ЧПУ).

Нам нужно:

  1. чтобы инфоблоки и каталоги в случае неправильной ссылки отдавали 404 статус
  2. чтоб этот статус правильно обрабатывался и приводил к вызову страницы 404.php

Первая задача выполняется настройкой инфоблоков и компонентов:

3. проверим настройки самих каталогов:

Скриншот 2015-01-01 14.56.00

URL страницы ИБ — отсылаем на папку из которой будет осуществляться вызов инфоблока

URL страницы раздела — если структура инфоблока будет иметь подразделы, то ссылка будет строиться на основе символьного кода раздела

URL страницы детального просмотра — если элемент находится в подразделе, то к ссылке будет прибавляться символьный код раздела, перед символьным кодом элемента. Иначе — только символьный код элемента

4. и инфоблоков:

Скриншот 2015-01-01 15.48.25

то есть, как мы видим, для инфоблоков подразделы можно не описывать.

5. проверим настройки вызова инфоблоков:

Скриншот 2015-01-01 15.22.18

Обязательно проверяем, что отмечена галка «Включить поддержку ЧПУ»!

Каталог ЧПУ — корневая папка инфоблока

Раздел — #SECTION_CODE#/ — повторяем из настроек инфоблока, но не ставим слеш в начале, иначе компонент будет работать не верно

Детальная информация — #SECTION_CODE#/#ELEMENT_CODE#/ —  ссылка формируется на основе символьного кода раздела (если есть) и кода элемента. Опять же, слеш в начале не ставим!

Если предполагается, что все элементы будут располагаться в корне инфоблока, без подразделов, то можно использовать следующие настройки:

Скриншот 2015-01-01 15.49.27

 

То есть поле для страницы раздела вообще можем пропустить , для страницы элемента: #ELEMENT_CODE#/ . Не забываем пропустить слеш в начале!

Отмечаем галочку «Устанавливать статус 404, если не найдены элемент или раздел:».

тех. отступление:

После сохранения всех настроек, если мы набираем в разделе инфоблока неправильный адрес, то по-прежнему вместо 404 страницы увидим корневую страницу раздела инфоблока, но страница будет иметь в заголовке 404 статус. Посмотреть его можно через браузерную панель разработчика:

Скриншот 2015-01-01 15.26.32

Этим то мы и воспользуемся, а чтобы данный статус правильно обрабатывался,

6. добавим следующий код в файл /bitrix/php_interface/init.php:

С этого момента страница ошибок будет работать! (наверно))) Если нет, опишите вашу ситуацию в комментариях

UPD от 29.08.15: чуть обновил код файла 404.php  и сниппет для init.php

Поделитесь полезной информацией с друзьями или подпишитесь на рассылку новых статей:

рассылка на почту всех новых статей сайта romapad.ru не чаще одного раза в неделю ->

Помогла статья или комментарий автора? Отблагодарите автора:


Про Роман Моренец

С 2009 года веб-дизайн — моя основная сфера деятельности. Создаю проекты разного уровня сложности, оказываю поддержку, разрабатываю индивидуальные решения, помогаю новичкам.


Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

19 мыслей про “Настраиваем правильную отработку 404 ошибки в битриксе