• Модуль: 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;
	}
}