Реализация отображения 404 страницы в Битриксе

В Битриксе есть проблема отображения 404 страницы, если на сайте используются компоненты, такие как catalog/news.list и пр. (отображающие какую-либо информацию из инфоблока). Проблема заключается в том, что при запросе какого-либо несуществующего раздела/элемента — производится отображение либо надписи, что раздел/элемент не найден, либо показывается начальная страница каталога. Как же быть?

Есть решение:

В init.php добавляем

Обработчик вызывается в самом конце создания страницы, чтобы точно быть уверенными, что все компоненты вызвались. CHTTP::GetLastStatus() устанавливается в компонентах Битрикса, т.е. как раз тот случай, который не обыгрывается стандартным решением от Битрикса. Далее мы сбрасываем буфер, тем самым очищаем всё, что успело попасть в него до этого. Заключительным шагом мы подключаем напрямую хедер, файл 404 ошибки и футер.

Сама 404 страница может выглядеть как угодно. Например, на неё можно добавить sitemap:

Другим решением является явный костыль, но всё же его можно взять на заметку.

Идея в следующем: проверить присутствует ли элемент/раздел в инфоблоке товаров с символьным кодом взятым из URL адреса. Если присутствует — показывать страницу товара/раздела, если нет — показывать 404 ошибку:

 

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

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