Страница 404 битрикс. Пример настройки и оформления 404 на битрикс.

Страница 404 ошибки имеет важную роль как для пользователей, так и для поисковых систем.
Опишу список вопросов, которые будут обозначены в этой статье:
- Страница 404 битрикс. Как настроить?
- Пример оформления 404 на битрикс.
- Вопрос о том, что 404 страница отдает код 200.
- Подводные камни при настройке 404 страницы.
Итак пойдем по порядку!
Страница 404 битрикс. Как настроить?
Обычно, в битрикс страница 404 настраивается в пару кликов, красивый внешний вид достигается копированием заготовки html кода для 404 страницы. Пойдем по порядку и тут.
Рассмотри настройку статуса 404 на примере комплексного компонента каталога. Для выполнения задачи нужно вызвать настройки компонента, в самом низу настроек будет блок с настройками 404 ошибки, в нем необходимые параметры:
- Устанавливать статус 404
- Показ специальной страницы

Эти параметры должны быть установлены по умолчанию при разработке или seo оптимизации сайтов на битриксе.
После установки этих параметров, необходимо сохранить настройки компонента, и проверить результат в разных вариациях (добавление к существующему url дополнительных букв, цифр в разных местах). Если все удачно и отдается страница со статусом 404, необходимо её оформить.
В битрикс страница 404 размещается в корне сайта в файле 404.php.
Пример оформления 404 на битрикс:
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Страница не найдена");
?>
$APPLICATION->ShowTitle(false);?>
Ошибка 404
Страница не найдена
Неправильно набран адрес или такой
страницы не существует
Перейти на главную
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
С кодом выше и с базовыми настройками 404, я думаю все понятно, продолжим.
Вопрос о том, что 404 страница отдает код 200.
Если 404 страница отдает код 200, идем в настройки главного модуля и проверяем наличие галочки у пункта "Посылать в заголовке статус 200 на 404 ошибку". Он должен быть отключен!

После этого страница должна отдавать статус 404.
Подводные камни при настройке 404 страницы в битрикс:
Бывает, что 404 страницу необходимо настроить на каком-нибудь готовом решении. Тут необходимо рассматривать каждый конкретный случай индивидуально. Возможно поможет вставка в init.php кода:
AddEventHandler("main", "OnEpilog", "error404Page");
function error404Page()
{
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';
}
}
Возможно поможет этот код, нужно пробовать и прокачивать:
define("PREFIX_PATH_404", "/404.php");
AddEventHandler("main", "OnAfterEpilog", "error404Page");
function error404Page() {
global $APPLICATION;
if (!defined('ERROR_404') || ERROR_404 != 'Y') {
return;
}
if ($APPLICATION->GetCurPage() != PREFIX_PATH_404) {
header('X-Accel-Redirect: '.PREFIX_PATH_404);
exit();
}
}
Если нечего не помогло, поздравляю вас! Необходимо лезть внутрь компонента, с помощью которого сделан ваш каталог, или статейный раздел и искать там место, где вставить обработку 404 ошибки. Это наверняка будет компонент который будет лежать в своем пространстве имен. Больше сказать ничего не могу, только прокачивать!
P.S.: Любую задачу можно выполнить, важно уделить её достаточно времени.
На этом все, теперь в bitrix 404 страница настроена и должна работать корректно, если возникнут вопросы или пожелания, рассмотреть реализацию какой-либо задачи - пишите в комментарии, разберем её выполнение в ближайшее время! Всем удачи и успехов в работе!