Как многие уже успели заметить, что когда мы в Битриксе заходим в каталог или другой инфоблок, в несуществующий раздел или элемент, нам выдается надпись «Раздел не найден» или «Элемент не найден». А вот если заходим на несуществующую страницу, то выдается страница 404.
Так вот что можно сделать, чтобы всегда и везде нас отправляло на страницу 404.
В footer.php находим код:
|
1 2 3 |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); IncludeTemplateLangFile(__FILE__); ?> |
И вставляем в него код, который будет отправлять нас при обнаружении несуществующей страницы:
|
1 2 3 4 |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); IncludeTemplateLangFile(__FILE__); if(defined("ERROR_404") && ERROR_404 == "Y" && $APPLICATION->GetCurPage(true) !='/404.php') LocalRedirect('/404.php'); ?> |
Главное, не забудьте в настройках инфоблока указать, чтобы при обращении к несуществующему разделу или элементу ему присваивался статус 404 ошибки.
Добавим в файл /bitrix/php_interface/init.php следующий код:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
AddEventHandler("main", "OnEpilog", "My404PageInSiteStyle"); function My404PageInSiteStyle() { 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'; } } |