- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
- Класс: CSiteCheckerTest
- Вызов: CSiteCheckerTest::check_localredirect
function check_localredirect()
{
$strSERVER = '';
foreach(array('SERVER_PORT', 'HTTPS', 'FCGI_ROLE', 'HTTP_HOST', 'SERVER_PROTOCOL') as $var)
$strSERVER .= '&'.$var.'='.urlencode($_SERVER[$var] ?? '');
if (!$this->arTestVars['last_value'])
{
$strRequest = "GET "."/bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=".checker_get_unique_id().$strSERVER." HTTP/1.1rn";
$strRequest.= "Host: ".$this->host."rn";
$strRequest.= "rn";
if (!$res = $this->ConnectToHost())
return false;
$strRes = GetHttpResponse($res, $strRequest, $strHeaders);
if (preg_match('#Location: (.+)#i', $strHeaders, $regs))
{
$url = trim($regs[1]);
if (!$url)
{
PrintHTTP($strRequest, $strHeaders, $strRes);
return false;
}
$this->arTestVars['last_value'] = $url;
$this->test_percent = 50;
return true;
}
PrintHTTP($strRequest, $strHeaders, $strRes);
return false;
}
else
{
$url = $this->arTestVars['last_value'];
if (!$url)
return false;
$ar = parse_url($url);
$host = $ar['host'];
$ssl = $ar['scheme'] == 'https' ? 'ssl://' : '';
$port = intval($ar['port']) ? intval($ar['port']) : ($ssl ? 443 : 80);
$strRequest = "GET "."/bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=".checker_get_unique_id().$strSERVER."&done=Y HTTP/1.1rn";
$strRequest.= "Host: ".$host."rn";
$strRequest.= "rn";
if ($res = $this->ConnectToHost($host, $port, $ssl))
return IsHttpResponseSuccess($res, $strRequest);
return false;
}
}