여기서 무엇을 추가 혹은 변경해야할까요?

여기서 무엇을 추가 혹은 변경해야할까요?

QA

여기서 무엇을 추가 혹은 변경해야할까요?

본문


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;     
  }
}
답변을 작성하시기 전에 로그인 해주세요.
전체 73
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT