PHP로 서브도메인 관리
페이지 정보
작성자 서방님 댓글 0건 조회 160회 작성일 15-09-22 10:36본문
오늘은 PHP로 서브도메인을 관리할 수 있는 방법에 대해서 말씀드려볼까 합니다.
(솔직히 이 부분은 php tip이라고 말씀드리기도 그렇고 apache나 linux tip 이라고 말씀드리기도 조금 곤란하지만^^;)
사이트 주소를 www.example.co.kr 이라고 예를 들어봅시다.
그렇다면 www는 서브 도메인이 됩니다.
기본적으로 CNAME은 www만 추가되어있을 것 이고 모두 example.co.kr 을 가리키고 있을 것 입니다.
서버측에서 CNAME의 www를 *로 변경하면 어떤 서브주소가들어와도 example.co.kr으로 접속이되게 됩니다.
예를 들자면
sub1.example.co.kr
sub2.sub1.example.co.kr
sub3.sub2.sub1.example.co.kr
위 모두가 example.co.kr으로 접속이 되게 되는것 입니다.
그렇다면 sub1.example.co.kr과 sub2.sub1.example.co.kr 이 둘은 어떻게 구분하는지 확인해 보겠습니다.
$_SERVER의 배열 중에 HTTP_HOST라는 것이 있습니다. 이는 클라이언트가 사이트를 접속당시 사용했던 호스트가 되겠는데요.
$_SERVER['HTTP_HOST']라고 불러들일 수 있곘습니다.
그리고 sub1.example.co.kr중에 sub1을 구분하는 법은 아래와 같습니다.
ereg ("^([-._a-zA-Z0-9]+[.]{0,1}).example.co.kr", $_SERVER['HTTP_HOST'], $suburl);
위의 절차를 거치게되면 $suburl 변수를 통해 sub1을 얻으실 수 있을 것 입니다.
그럼 이를 db나 switch나 if문을 통해서 구분해 접속할 수 있을 것입니다.
예를들어
function url1go()
{
include "./inc/sub1.htm";
}
function url2go()
{
include "./inc/sub2.htm";
}
switch($suburl)
{
case "sub1": url1go();
break;
case "sub2.sub1": url2go();
break;
}
를 통해서 사이트를 구분할 수 있을 것 입니다.
위에서 말씀드린 내용은 주소가 영어일때만 가능하게 됩니다.
왜냐하면 url에는 한글이들어갈 수 없기 떄문입니다. 하지만 한국에서는 한글주소가 몇몇 있습니다.
이는 모두 Punycode를 사용한 방법일 것입니다.
Punycode는 예를들어 가나다.example.co.kr 라고 접속했을때 한글 문자를 --x306o2352x0.example.co.kr 이런식으로 변환시켜주는 동작을 합니다.
Punycode를 이용해서 한글 서브주소를 설정하는법은 아래와 같습니다.
우선은 idna_convert.class.php (첨부) 파일이 필요합니다. 이 파일이 위와같이 Punycode로 인코딩된 내용을 디코딩해 주게 됩니다.
require_once('./idna_convert.class.php');
$IDN = new idna_convert();
$_SERVER['HTTP_HOST'] = $IDN->decode($_SERVER['HTTP_HOST']);
위 코드를 처음에 말씀드렸던 소스 switch문이나 if문 db검색문 위에 올려두시면 됩니다.
아직 혼자 배우고있는 상황이라 저도 정확히 알지는 못합니다 ^^..
사이트를 운영하시는 분들께 조금이나마 도움이되었으면 합니다.
참고사이트는 http://link.up7.kr 입니다.
다음에는 Apache의 .htaccess을 통해서 파일 및 폴더가 누락되었을때의 처리 그리고 이미지 및 동영상 유출방지법, 마지막으로 Basic 인증에 대해서 말씀드리겠습니다.
좋은하루되세요!
첨부파일
- idna_convert.class.php (268.0K) 4회 다운로드 | DATE : 2015-09-22 10:38:10
댓글목록
등록된 댓글이 없습니다.