Страница 404 (Страница не найдена)

Когда открывается несуществующая страница, то выполняется файл 404.php.

// 404.php
include_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php';

CHTTP::SetStatus('404 Not Found');
define('ERROR_404', 'Y');

require $_SERVER['DOCUMENT_ROOT'].'/bitrix/header.php';
$APPLICATION->SetTitle('Страница не найдена');


# Вёрстка страницы 404


require $_SERVER['DOCUMENT_ROOT'].'/bitrix/footer.php';

Если нет элемента или раздела инфоблока, то просто выводится текст «элемент не найден». Если надо выводить страницу 404, то в файле bitrix/php_interface/SITE_ID/init.php надо добавить следующий код:

// bitrix/php_interface/SITE_ID/init.php
AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);

function _Check404Error() {
    if (defined('ERROR_404') && ERROR_404 == 'Y') {
        global $APPLICATION;
        $APPLICATION->RestartBuffer();
        include $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/header.php';
        include $_SERVER['DOCUMENT_ROOT'].'/404.php';
        include $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/footer.php';
    }
}

Также код выше позволяет выводить страницу 404, просто создав константу ERROR_404.

// Вывести страницу 404
define('ERROR_404', 'Y');
require $_SERVER['DOCUMENT_ROOT'].'/bitrix/header.php';

Выводить текущую страницу как 404

Открывать текущую страницу со статусом 404 можно через метод CHTTP::SetStatus().

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

// Вывести страницу со статусом 404
CHTTP::SetStatus('404 Not Found');