protected static function parseDomain(&$url, $domain) { if (!$domain) { return ''; } $request = Request::instance(); if (true === $domain) { // 自动判断域名 $domain = $request->host(); if (Config::get('url_domain_deploy')) { // 根域名 $urlDomainRoot = Config::get('url_domain_root'); $domains = Route::rules('domain'); $route_domain = array_keys($domains); foreach ($route_domain as $domain_prefix) { if (0 === strpos($domain_prefix, '*.') && strpos($domain, ltrim($domain_prefix, '*.')) !== false) { foreach ($domains as $key => $rule) { $rule = is_array($rule) ? $rule[0] : $rule; if (is_string($rule) && false === strpos($key, '*') && 0 === strpos($url, $rule)) { $url = ltrim($url, $rule); $domain = $key; // 生成对应子域名 if (!empty($urlDomainRoot)) { $domain .= $urlDomainRoot; } break; } else { if (false !== strpos($key, '*')) { if (!empty($urlDomainRoot)) { $domain .= $urlDomainRoot; } break; } } } } } } } elseif (!strpos($domain, '.')) { $rootDomain = Config::get('url_domain_root'); if (empty($rootDomain)) { $host = $request->host(); $rootDomain = substr_count($host, '.') > 1 ? substr(strstr($host, '.'), 1) : $host; } $domain .= '.' . $rootDomain; } return ($request->isSsl() ? 'https://' : 'http://') . $domain; }