rewrite module사용시 몇가지 상황에 대해 url을 디렉토리 형식으로 추가 변경하도록 함

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4278 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-06-12 05:37:22 +00:00
parent 9d7a4ccaea
commit c8a119b01b
2 changed files with 53 additions and 26 deletions

View file

@ -48,6 +48,12 @@ RewriteRule ^([a-zA-Z0-9_]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&page=$2 [L]
# mid + category link # mid + category link
RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&category=$2 [L] RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&category=$2 [L]
# mid + act + document_Srl
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$3&act=$2 [L]
# mid + document_Srl + page
RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$2&page=$3 [L]
# mid + category + page # mid + category + page
RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&category=$2&page=$3 [L] RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&category=$2&page=$3 [L]
@ -63,5 +69,8 @@ RewriteRule ^([a-zA-Z0-9_]+)/tag/(.*)$ ./index.php?mid=$1&search_target=tag&sear
# mid + search target writer # mid + search target writer
RewriteRule ^([a-zA-Z0-9_]+)/writer/(.*)$ ./index.php?mid=$1&search_target=nick_name&search_keyword=$2 [L] RewriteRule ^([a-zA-Z0-9_]+)/writer/(.*)$ ./index.php?mid=$1&search_target=nick_name&search_keyword=$2 [L]
# mid + document_Srl + page + act
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$3&page=$4&act=$2 [L]
# module link # module link
RewriteRule ^([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?mid=$1 [L] RewriteRule ^([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?mid=$1 [L]

View file

@ -584,34 +584,49 @@
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL); if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL);
else $path = $this->getRequestUri(RELEASE_SSL); else $path = $this->getRequestUri(RELEASE_SSL);
// rewrite모듈을 사용하고 인자의 값이 4개 이하일 경우 // rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
if($this->allow_rewrite && $var_count < 4) { if($this->allow_rewrite) {
$var_keys = array_keys($get_vars); if(count($get_vars)) foreach($get_vars as $key => $value) if($value !== 0 && !$value) unset($get_vars[$key]);
if($var_count == 1) { $var_keys = array_keys($get_vars);
if($var_keys[0]=='mid') return $path.$get_vars['mid']; asort($var_keys);
elseif($var_keys[0]=='document_srl') return $path.$get_vars['document_srl']; $target = implode('.',$var_keys);
} elseif($var_count == 2) {
asort($var_keys); switch($target) {
$target = implode('.',$var_keys); case 'mid' :
if($target=='act.mid' && !preg_match('/([A-Z]+)/',$get_vars['act'])) return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['act']); return $path.$get_vars['mid'];
elseif($target=='document_srl.mid') return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['document_srl']); case 'document_srl' :
elseif($target=='act.document_srl') return sprintf('%s%s/%s',$path,$get_vars['document_srl'],$get_vars['act']); return $path.$get_vars['document_srl'];
elseif($target=='mid.page') return sprintf('%s%s/page/%s',$path,$get_vars['mid'],$get_vars['page']); case 'act.mid' :
elseif($target=='category.mid') return sprintf('%s%s/category/%s',$path,$get_vars['mid'],$get_vars['category']); return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['act']);
} elseif($var_count == 3) { case 'document_srl.mid' :
asort($var_keys); return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['document_srl']);
$target = implode('.',$var_keys); case 'act.document_srl' :
if($target=='act.document_srl.key') { return sprintf('%s%s/%s',$path,$get_vars['document_srl'],$get_vars['act']);
case 'mid.page' :
return sprintf('%s%s/page/%s',$path,$get_vars['mid'],$get_vars['page']);
case 'category.mid' :
return sprintf('%s%s/category/%s',$path,$get_vars['mid'],$get_vars['category']);
case 'act.document_srl.key' :
return sprintf('%s%s/%s/%s',$path,$get_vars['document_srl'],$get_vars['key'],$get_vars['act']); return sprintf('%s%s/%s/%s',$path,$get_vars['document_srl'],$get_vars['key'],$get_vars['act']);
} elseif($target=='category.mid.page') { case 'document_srl.mid.page' :
return sprintf('%s%s/%s/page/%s',$path,$get_vars['mid'],$get_vars['document_srl'],$get_vars['page']);
case 'category.mid.page' :
return sprintf('%s%s/category/%s/page/%s',$path,$get_vars['mid'],$get_vars['category'],$get_vars['page']); return sprintf('%s%s/category/%s/page/%s',$path,$get_vars['mid'],$get_vars['category'],$get_vars['page']);
} elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='tag') { case 'mid.search_keyword.search_target' :
return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); switch($get_vars['search_target']) {
} elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='regdate') { case 'tag' :
if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword']));
elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); case 'nick_name' :
} return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword']));
case 'regdate' :
if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2));
elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2));
}
case 'act.document_srl.mid' :
return sprintf('%s%s/%s/%s',$path,$get_vars['mid'], $get_vars['act'],$get_vars['document_srl']);
case 'act.document_srl.mid.page' :
return sprintf('%s%s/%s/%s/page/%s',$path,$get_vars['mid'], $get_vars['act'], $get_vars['document_srl'],$get_vars['page']);
} }
} }
@ -640,7 +655,10 @@
$use_ssl = false; $use_ssl = false;
break; break;
} }
return sprintf("%s://%s%s",$use_ssl?'https':'http',$_SERVER['HTTP_HOST'], getScriptPath());
if($use_ssl) return sprintf("%s://%s%s",'https',$_SERVER['HTTP_HOST'], getScriptPath());
return getScriptPath();
} }
/** /**