diff --git a/application/common.php b/application/common.php index fa160030b771c163ecb4ac2a6e3fc262b875d459..27614e5f5b3cfeb627c2cb2c768abd91d6bbe4ff 100755 --- a/application/common.php +++ b/application/common.php @@ -86,8 +86,10 @@ if (!function_exists('cdnurl')) { function cdnurl($url, $domain = false) { $regex = "/^((?:[a-z]+:)?\/\/|data:image\/)(.*)/i"; + $regexDomain = "/^(?:[a-z]+:)?\/\/(.*)/i"; $cdnurl = \think\Config::get('upload.cdnurl'); - $url = preg_match($regex, $url) || ($cdnurl && stripos($url, $cdnurl) === 0) ? $url : $cdnurl . $url; + $url = !is_bool($domain) && preg_match($regexDomain, $domain) ? $domain . $url : $url; + $url = preg_match($regex, $url) || ($cdnurl && stripos($url, $cdnurl) === 0) || $domain === false ? $url : $cdnurl . $url; if ($domain && !preg_match($regex, $url)) { $domain = is_bool($domain) ? request()->domain() : $domain; $url = $domain . $url;