Показ страницы 404 в Битрикс: Tools::process404 и ручной CHTTP
Задача
Нужно корректно отдать браузеру и поисковикам код 404 и показать шаблон страницы «не найдено». В обвязке компонентов инфоблоков это обычно делает один вызов. В голом PHP после инициализации ядра удобнее выставить константу и статус, затем переоткрыть рабочую область на /404.php.
Вариант с инфоблоками
\Bitrix\Iblock\Component\Tools::process404() подходит, когда ошибка связана с отсутствием раздела, элемента или подобными проверками в сайтовой части каталогов и новостных списков.
\Bitrix\Iblock\Component\Tools::process404(
'404 Не найдено',
true,
true,
true,
false
);Параметры по порядку: текст при отказе от стандартного шаблона, установить ERROR_404, выставить HTTP-статус, отрисовать страницу 404, использовать нестандартный файл ошибки при необходимости.
Без модуля инфоблоков
if (!defined('ERROR_404')) {
define('ERROR_404', 'Y');
}
\CHTTP::setStatus('404 Not Found');
if ($APPLICATION->RestartWorkarea()) {
require \Bitrix\Main\Application::getDocumentRoot() . '/404.php';
}На что обратить внимание
- Файл
/404.phpдолжен существовать в корне документа и быть доступен после перезапуска рабочей области шаблона. - Сообщите об ошибке до тяжёлых блоков страницы, чтобы не трать ресурсы на заведомо пустые ответы.
- На боевых сайтах не смешивайте отладочный вывод и «мягкий» перенаправляющий 302 вместо жёсткого 404 — для SEO это принципиально.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии