- Модуль: clouds
- Путь к файлу: ~/bitrix/modules/clouds/classes/general/storage.php
- Класс: CCloudStorage
- Вызов: CCloudStorage::OnBeforeProlog
static function OnBeforeProlog()
{
if (defined("BX_CHECK_SHORT_URI") && BX_CHECK_SHORT_URI)
{
$upload_dir = "/".trim(COption::GetOptionString("main", "upload_dir", "upload"), "/")."/";
$request_uri = BitrixMainTextEncoding::convertEncoding(rawurldecode($_SERVER["REQUEST_URI"]), "UTF-8", LANG_CHARSET);
foreach (CCloudStorageBucket::GetAllBuckets() as $arBucket)
{
if ($arBucket["ACTIVE"] == "Y")
{
$obBucket = new CCloudStorageBucket($arBucket["ID"]);
if ($obBucket->Init())
{
$bucketUrl = $obBucket->GetFileSRC('/');
$bucketPrefix = rtrim(parse_url($bucketUrl, PHP_URL_PATH), '/');
$prefixMatch = $bucketPrefix ? "(?:$bucketPrefix|)" : "";
$match = array();
if (
COption::GetOptionString("clouds", "delayed_resize") === "Y"
&& preg_match("#^$prefixMatch(/resize_cache/.*$)#", $request_uri, $match)
)
{
session_write_close();
$to_file = $obBucket->GetFileSRC($match[1], false);
if (CCloudStorage::ResizeImageFileCheck($obBucket, $to_file))
{
$cache_time = 3600 * 24 * 30; // 30 days
header("Cache-Control: max-age=".$cache_time);
header("Expires: ".gmdate("D, d M Y H:i:s", time() + $cache_time)." GMT");
header_remove("Pragma");
LocalRedirect(BitrixMainWebUri::urnEncode($to_file, "UTF-8"), true, "301 Moved Permanently");
}
}
elseif (
!preg_match("/[?&]/", $request_uri)
&& $obBucket->FileExists($request_uri)
)
{
if (COption::GetOptionString("clouds", "log_404_errors") === "Y")
CEventLog::Log("WARNING", "CLOUDS_404", "clouds", $_SERVER["REQUEST_URI"], $_SERVER["HTTP_REFERER"]);
LocalRedirect($obBucket->GetFileSRC($request_uri), true);
}
elseif (mb_strpos($request_uri, $upload_dir) === 0)
{
$check_url = mb_substr($request_uri, mb_strlen($upload_dir) - 1);
if ($obBucket->FileExists($check_url))
{
if (COption::GetOptionString("clouds", "log_404_errors") === "Y")
CEventLog::Log("WARNING", "CLOUDS_404", "clouds", $_SERVER["REQUEST_URI"], $_SERVER["HTTP_REFERER"]);
LocalRedirect($obBucket->GetFileSRC($check_url), true);
}
}
}
}
}
}
}