Настройка компонента и страницы 404
Во первых перейдите к настройкам вашего компонента (обычно это bitrix.catalog или bitrix.news), блоке «настройки 404 ошибки» отметьте галочку «Устанавливать статус 404».
Затем в файл /bitrix/php_interface/init.php добавьте следующий код:
AddEventHandler("main", "OnEpilog", "error_page");
function error_page()
{
$page_404 = "/404.php";
GLOBAL $APPLICATION;
if(strpos($APPLICATION->GetCurPage(), $page_404) === false && defined("ERROR_404") && ERROR_404 == "Y")
{
$APPLICATION->RestartBuffer();
CHTTP::SetStatus("404 Not Found");
include($_SERVER["DOCUMENT_ROOT"].SITE_TEMPLATE_PATH."/header.php");
include($_SERVER["DOCUMENT_ROOT"].$page_404);
include($_SERVER["DOCUMENT_ROOT"].SITE_TEMPLATE_PATH."/footer.php");
die();
}
}
в файле /404.php
$APPLICATION->SetTitle("404 Not Found");
$APPLICATION->SetPageProperty("title", "404 Страница не найдена");
$APPLICATION->SetPageProperty("description", "404 Нет такой страницы :(");
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Текст для разных языковых версий сайта (русский - в корне, английский - в папке /en/)
<? if (substr($APPLICATION->GetCurDir(), 0, 4) == '/en/') { ?>
<div style="margin:25px 0;">
404 Page not found
</div>
<div>
The page you requested may have been deleted or moved. <a href="/en/">Go back to the main page?</a>
</div>
<? } else { ?>
<div style="margin:25px 0;">
404 Страница не найдена
</div>
<div>
Возможно запрашиваемая вами страница была удалена или перемещена. <a href="/">Вернуться на главную?</a>
</div>
<? } ?>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Для компонента news.list, если в несуществующем разделе вываливается весь список новостей без фильтрации
В настройках выставить параметр «Строгая проверка раздела».
Или в коде вызова компонента:
"STRICT_SECTION_CHECK" => "Y",
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////