별칭 도메인 (CNAME), 서브도메인에 하위 디렉토리 링크 포워딩 하기
도메인을 보면 서브도메인 서비스 형식은 아래와 같다
[*****.naver.com] 이러한 서브도메인에 특정 주소지 또는 IP를 입력하여 리다이렉트 시키거나 포워딩을 할 수 있는데, 문제는 하위폴더는 적용되지 않는다.
[cafe.naver.com]이라 할 때 연결되는 포워딩 대상이 [cafe2.naver.com]과 같은 형식이면 무관하나, 하위 디렉토리나 디렉토리내 파일 즉, [cafe2.naver.com/dir] 또는 [cafe2.naver.com/file.html]과 같은 형식은 적용되지 않는다는 것이다.
이러한 문제를 보완하려면 meta소스 또는 자바스크립트를 이용한 리다이렉팅으로 처리하면 되지만, 이는 번거로울 뿐 아니라 index파일의 위치에 따라 안될 수 있다
여기서는 .htaccess를 이용하여 mod_rewrite가 꼭 지원되야 하는 조건이다.
만약 SSH에서 apache 또는 tomcat의 환경을 직접 설정할 수 있는 상태라면 아파치 환경설정 파일을 열어 mod_rewrite모듈을 찾아본다.
혹시 모듈 프로시저가 없다면 입력해주자
ntp.poisoneye.info접속시 같은 디렉토리 내에 있는 폴더 안으로 포워딩 한다고 볼 수 있다.
접속주소 | 포워딩주소 |
ntp.poisoneye.info | ntp.poisoneye.info/ntp/index.php |
ftp.poisoneye.info | ftp.poisoneye.info/ftp/index.php |
str.poisoneye.info | str.poisoneye.info/str/index.php |
물론 구지 아파치 설정파일을 건들이지 않아도 무관하다, index.php가 상주해있는 폴더에 .htaccess파일을 생성하여 조건부 rewrite사용을 할 수 있기 때문이다.
mod_rewrite에 대한 조건부 설정은 다양하니 아래를 참고해보자.
www.aaa.com으로 시작하는 주소만 www.bbb.net로 보내기
: aaa.com의 뿌리 자료방(루트 디렉토리)의 .htaccess에 추가한다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.aaa\.com)
RewriteRule (.*) http://www.bbb.net/$1 [L]
www.aaa.com과 aaa.com으로 시작하는 주소를 www.bbb.net로 보내기
: aaa.com의 뿌리 자료방의 .htaccess에 추가한다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.aaa\.com|aaa\.com)
RewriteRule (.*) http://www.bbb.net/$1 [L]
aaa.com을 www.aaa.com으로 바꾸기
: aaa.com의 뿌리 자료방 .htaccess에 추가한다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(aaa\.com)
RewriteRule (.*) http://www.aaa.com/$1 [L]
aaa.com을 aaa.com/bbb로 보내기
: aaa.com의 뿌리 자료방 .htaccess에 추가한다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(aaa\.com|www\.aaa\.com)
RewriteRule (.*) /bbb/$1 [L]
[L]은 이후에 뒤에 구문이 나오든 그 줄에서 끝낸다는 뜻이다.
aaa.com/bbb를 하위 주소까지 ccc.net로 보내기 (영구 이동)
# aaa.com/bbb/.htaccess에 추가
RewriteEngine On
RewriteRule (.*) http://www.ccc.net/$1 [R=301,L]
또는
# aaa.com/.htaccess에 추가
RewriteEngine On
RewriteRule ^bbb/(.*) http://www.ccc.net/$1 [R=301,L]
여기서 R=301은 그 주소로 영구 이동하는 것을 나타낸다. 이렇게 하면 도메인 주소를 바꿨을 때에 검색기들이 알아 차리고, 옛 주소를 새 주소로 갱신할 수 있다.
aaa.com이 들어가는 모든 주소(서브도메인 포함)를 bbb.net로 보내기
: aaa.com의 뿌리 자료방 .htaccess에 추가한다.
RewriteEngine On
RewriteCond %{HTTP_HOST} aaa\.com
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.aaa\.com(.*) http://$1.bbb.net/$2 [L]
RewriteRule ^aaa\.com(.*) http://bbb.net/$1 [L]
출처 : http://pat.im/461
이렇게 하면 도메인 값도 아끼고 서버의 자원도 활용할 수 있으나, 가끔가다 오류가 발생하니 주의하면서 하도록 하자