Есть инфоблок со списком поддоменов.
Если зайти на поддомен, которого нет в этом списке, должен отдаваться статус 404.
Нижеприведённый код работает на всём сайте, кроме главной страницы.
К примеру, a.vsesvetodiody.ru/dileram.html - правильно отдаёт 404, а просто a.vsesvetodiody.ru выдаёт пустую страницу, хотя скрипт точно доходит до создания файла 1111111111111111111.txt
В чём может быть проблема?
AddEventHandler("main", "OnEpilog", "handler404");
function handler404()
{
global $USER;
global $APPLICATION;
$curDir = $APPLICATION->GetCurDir();
$arDir = explode('/', $curDir);
$curPage = $APPLICATION->GetCurPage();
if (isset($_SERVER["REAL_FILE_PATH"]))
{
$arRequest = explode("/", $_SERVER["REDIRECT_URL"]);
if (
(
($_SERVER["REAL_FILE_PATH"] == "/index.php")
&& (count($arRequest) != 3)
)
||
(
(count($arRequest) == 3)
&& (strlen($arRequest[2]) > 0)
&& (substr($arRequest[2], -5, 5) != ".html")
)
)
{
define("ERROR_404", "Y");
}
}
$poddomen=str_replace(".vsesvetodiody.ru","",$_SERVER["HTTP_HOST"]);
$poddomen=str_replace("vsesvetodiody.ru","",$poddomen);
if(defined('ERROR_404') && ERROR_404 == 'Y')
{
$template = 'main';
$APPLICATION->RestartBuffer();
$APPLICATION->SetPageProperty("title", "Ошибка 404");
$APPLICATION->SetPageProperty("h1", "Error 404");
$APPLICATION->SetTitle("Error 404");
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.$template.'/header.php';
include $_SERVER['DOCUMENT_ROOT'].'/include/404_text.php';
include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.$template.'/footer.php';
} else if ($poddomen) {
CModule::IncludeModule('iblock');
$select = Array("NAME","ID","CODE");
$arFilter = Array("IBLOCK_ID"=>2, "CODE" => $poddomen, "ACTIVE" => "Y");
$res = CIBlockElement::GetList(Array("SORT"=>"ASC", "PROPERTY_PRIORITY"=>"ASC"), $arFilter, $select);
$poddomen = $res->GetNext();
if(!$poddomen["ID"]) {
file_put_contents('1111111111111111111.txt', 1);
$template = 'main';
$APPLICATION->RestartBuffer();
$APPLICATION->SetPageProperty("title", "Ошибка 404");
$APPLICATION->SetPageProperty("h1", "Error 404");
$APPLICATION->SetTitle("Error 404");
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.$template.'/header.php';
include $_SERVER['DOCUMENT_ROOT'].'/include/404_text.php';
include $_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/'.$template.'/footer.php';
}
}
}