diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index f7d4fc16e..803eac309 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -701,13 +701,8 @@ if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend'; elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages'; - if(!$domain) { - if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL); - else $path = $this->getRequestUri(RELEASE_SSL); - } else { - if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = 'https://'.$domain; - else $path = 'http://'.$domain; - } + if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL, $domain); + else $path = $this->getRequestUri(RELEASE_SSL, $domain); $var_count = count($get_vars); if(!$var_count) return $path; @@ -775,10 +770,13 @@ /** * @brief 요청이 들어온 URL에서 argument를 제거하여 return **/ - function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL) { + function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) { static $url = array(); - if(isset($url[$ssl_mode])) return $url[$ssl_mode]; + if($domain) $domain_key = md5($domain); + else $domain_key = 'default'; + + if(isset($url[$ssl_mode][$domain_key])) return $url[$ssl_mode][$domain_key]; switch($ssl_mode) { case FOLLOW_REQUEST_SSL : @@ -793,21 +791,17 @@ break; } - $site_module_info = Context::get('site_module_info'); - $domain = trim($site_module_info->domain); if($domain) { - $domain = preg_replace('/^(http|https):\/\//i','', trim($domain)); - if(substr($domain,-1) != '/') $domain .= '/'; + $target_url = trim($domain); + if(substr($target_url,-1) != '/') $target_url.= '/'; } else { - $domain = preg_replace('/:'.$_SERVER['SERVER_PORT'].'$/','',$_SERVER['HTTP_HOST']).getScriptPath(); + $target_url= $_SERVER['HTTP_HOST'].getScriptPath(); } - $domain = sprintf("%s://%s",$use_ssl?'https':'http',$domain); + $url_info = parse_url('http://'.$target_url); + $url[$ssl_mode][$domain_key] = sprintf("%s://%s%s%s",$use_ssl?'https':$url_info['scheme'], $url_info['host'], $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$url_info['path']); - $url_info = parse_url($domain); - $url[$ssl_mode] = sprintf("%s://%s%s%s",$url_info['scheme'], $url_info['host'], $_SERVER['SERVER_PORT']!=80?':'.$_SERVER['SERVER_PORT']:'',$url_info['path']); - - return $url[$ssl_mode]; + return $url[$ssl_mode][$domain_key]; } /** diff --git a/modules/homepage/homepage.class.php b/modules/homepage/homepage.class.php index 61f2e5cf6..749f7752b 100644 --- a/modules/homepage/homepage.class.php +++ b/modules/homepage/homepage.class.php @@ -20,7 +20,7 @@ $oModuleModel = &getModel('module'); if(!$oModuleModel->getDefaultMid()) { $tmp_url = parse_url(Context::getRequestUri()); - $domain = sprintf('%s%s', $tmp_url['host'], $tmp_url['path']); + $domain = sprintf('%s%s%s', $tmp_url['host'], $tmp_url['port']&&$tmp_url['port']!=80?':'.$tmp_url['port']:'',$tmp_url['path']); $oHomepageAdminController = &getAdminController('homepage'); $oHomepageAdminController->insertHomepage('homepage', $domain); } diff --git a/modules/module/module.model.php b/modules/module/module.model.php index fe0cb5282..218942e01 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -32,7 +32,7 @@ $url_info = parse_url(Context::getRequestUri()); $hostname = $url_info['host']; $path = preg_replace('/\/$/','',$url_info['path']); - $sites_args->domain = sprintf('%s%s', $hostname, $path); + $sites_args->domain = sprintf('%s%s%s', $hostname, $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$path); $output = executeQuery('module.getSiteDefaultInfo', $sites_args); if(!$output->toBool() || !$output->data) $output = executeQuery('module.getDefaultMidInfo'); $module_info = $output->data;