think\Url::parseDomain PHP Method

parseDomain() protected static method

检测域名
protected static parseDomain ( &$url, $domain )
    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;
    }