여기서 무엇을 추가 혹은 변경해야할까요?
본문
RewriteCond %{HTTP_HOST} !^(www|m|login|member|app)\.domain\.co.kr$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www\.domain\.co.kr/$1 [L,R]
htaccess에서 지정한 서브도메인이 아니라면 www.domain.co.kr 로 바꾸는 것을
아래 php에서 작동하도록 작성했는데요
$arr_allowed = array("www", "m", "login", "member", "app");
if (preg_match('/^([^.]+)\.domain\.co\.kr$/', $_SERVER['HTTP_HOST'], $match)){
if (!in_array($match[1], $arr_allowed)){
header("location: http://www.domain.co.kr".$REQUEST_URI);
exit;
}
}
이게 문제가 .domian.co.kr 앞의 서브도메인이 없으면 그냥 패스(?)해버립니다.
앞에 1.domain.co.kr처럼 무언가가 있으면 www로 잘 넘어가는데 domain.co.kr이면 그냥 domain.co.kr이 되버립니다.
어떻게 손봐야하나요?
...
...
답변 2
흠 자답이네요
$sub_tmp = explode('.domain.com', $_SERVER['HTTP_HOST']);
$sub_domain = current($sub_tmp);
$arr_allowed = array("www", "member", "app");
if (!in_array($sub_domain, $arr_allowed)){
header("location: //www.domain.com".$REQUEST_URI);
exit;
}
explode 로 주소를 잘라서 비교했습니다.
이렇게한이유는 질문글의 코드는 2차 서브도메인 (www1.www2.domain.com)의 경우 Array라는 값을 출력하기때문입니다.
...
...
$arr_allowed = array("www", "m", "login", "member", "app");
if (preg_match('/^([^.]+)\.domain\.co\.kr$/', $_SERVER['HTTP_HOST'], $match)){
if (!in_array($match[1], $arr_allowed) || !$match[1]){
header("location: http://www.domain.co.kr".$REQUEST_URI);
exit;
}
}
답변을 작성하시기 전에 로그인 해주세요.