[도메인] 도메인을 포워딩 하는 여러가지 방법
1. URL 포워딩 방법에 대해서
2. [방법1] 특정 문서의 메타태그를 이용한 방법
3. [방법2] 자바스크립트를 이용한 방법
4. [방법3] PHP3에서 사용한 방법
5. [방법4] 아파치 지시자 중 Redirect를 이용한 방법
6. 마치며
1. URL 포워딩 방법에 대해서
이 문서에서의 URL 포워딩이라 함은 웹 싸이트에서 특정 문서를
다른 URL로 이동함을 의미한다.
예를 들어,
http://www.linux.ac.kr/~kernel을 입력했을 경우, 자동으로
http://kernel.linux.ac.kr 싸이트로 이동하게 하는 방법이다.
특히 초보자가 많이 질문하는 “도메인 포워딩”하고는 본질적으로
다르지만, 하나의 특정 도메인에서 다른 도메인으로 이동한다는(포워딩)
점에서 비슷한 기능을 가지고 있다.
*주)—————————————————————–
필자가 생각하는 “도메인 포워딩”은 그 특정 도메인을 관리하는 네임서버
주소를 다른 주소로 이동(?)함을 의미한다고 생각한다.
BIND8의 부트 파일(named.conf)에서 다음과 같은 경우.
options {
…
forward only ;
forwarders {192.168.12.8 ; 192.168.12.9;};
..
};
또는
zone “linux.ac.kr” {
type forward;
forward only ;
forwarders {192.168.12.8 ; 192.168.12.9;};
..
};
도메인 포워딩에 관한 정확한 정의와 지식이 있는 분은 상위의 필자 메일로
답변해 주시면 고맙겠습니다.
———————————————————————
URL을 포워딩하는 방법은 크게 4가지 정도의 방법이 있다.
방법1) HTML 문서 헤더의 메타태그를 이용한 방법
방법2) 자바스크립트를 이용한 방법
방법3) PHP에서 Header() 함수를 이용한 방법
방법4) 아파치 지사자 중 Redirect를 이용한 방법
등이다.
이 중에서 방법1, 2, 3은 웹 디렉토리 내에 이미 존재하는 문서에서
설정해야한다. 즉, 시스템 관리자가 아닌 계정 사용자 원하는 문서에서
사용하기 편한 방법이다.
단점은 웹브라우저의 [Back] 버튼을 눌렸을 경우, 바로 이전 URL로
이동하기 힘들다는 점이다.(0초로 설정했을 경우)
즉 이동을 설정했던 싸이트로 들어가면 바로 다른 싸이트로 이동하게 끔
설정해 놓았기 때문이다.
즉 이동을 설정했던 싸이트로 들어가면 바로 다른 싸이트로 이동하게 끔
설정해 놓았기 때문이다.
사용자 입장에서는 조금 불편한 점은 없지않아 있다.
이런 방법을 역이용해서 다른 싸이트로 이동하지 못하게(?)하는 싸이트가
꽤 있다..
한 두번 쯤 경험해 봤을 것으로 믿는다.
반면, 방법4는 아파치 서버 관리자 입장에서 설정해야하며 기존의 문서가
존재했으나(또는 존재하지 않았어도 무방하다.) 지금은 웹 디렉토리에 내에
존재하지 않은 경우에 유용한 방법이다.
주로 특정 호스트 전체를 통체로 이동하고자 할 경우에 유용한 방법이다.
2. [방법1] 특정 문서의 메타태그를 이용한 방법
만약, 웹 주소가 http://www.linux.ac.kr/~kernel
이고, 이 주소를 http://kernel.linux.ac.kr으로 이동하게 하려면
http://www.linux.ac.kr/~kernel/index.html
파일에
다음과 같이 헤더에 매타태그를 추가한다.
———-index.html ————————————————–
You will be moved to my new homepage automatically…
If not, you can move manually clicking
<a href=”http://kernel.linux.ac.kr”>here</a>.
———————————————————————–
앞의 내용은 예제를 보이기 위해서 본문(body)의 내용을 넣어주었다.
중요한 내용은
이다.
content=”5; URL=http://kernel.linux.ac.kr”
와 같이 설정하면 5초 후 http://kernel.linux.ac.kr URL로
이동한다.
3. [방법2] 자바스크립트를 이용한 방법
방법2와 동일한 방법이다.
———-index.html ————————————————–
———————————————————————–
4. [방법3] PHP3에서 사용한 방법
역시 방법 2, 3과 동일한 방법이다.
———-index.php3 ————————————————–
———————————————————————–
주의해야할 점은
header() 함수를 사용하기전에 바로 앞 줄에 echo()함수나 printf()문이 없어야 한다.
만약 header() 함수 이전에 echo() 함수가 있다면 에러를 발생할 것이다.
이는 SetCookie() 함수를 사용하는 방법과 똑같이 다루어져야 한다.
5. [방법4] 아파치 지시자 중 Redirect를 이용한 방법
이 방법은 아파치 서버 관리자 입장에서 설정하는 방법으로
기존에 소개했던 3가지 방법과는 다르게
기존에 존재했던 문서이든지 존재하지 않았던 문서이든지에 상관없이
특정 문서나 디렉토리를 다른 URL로 이동하는 방법이다.
Redirect <이전 URL> <새로운 URL>
Redirect 지시자는, 지금은 서버에 존재하지 않은 문서(URL)에 대해서 다른 URL로 포워딩
한다.
이 지시자는 클라이언트 입장에서 매우 유용하다.
예전에 자신의 홈페이지가 현재의 서버에 존재했지만 지금은 다른 곳으로 옮겨졌다면 클라
이언트에게 알려줄 필요가 있다. 물론 URL 포워딩은 사용자 입장에서 HTML 메타 태그로
가능하지만 서버입장에서 Redirect 지시자를 이용하여 쉽게 포워딩이 가능하다.
여러 개의 Redirect 지시자 사용이 가능하다.
다음의 예제를 보자.
예제 1 : Redirect /kernel http://kernel.linux.ac.kr
예제 2 : Redirect /linux/kernel.html http://kernel.linux.ac.kr
예제 3 : Redirect /~study http://www.linux.ac.kr/study.html
<이전 URL>에 해당하는 부분은 “http://”로 시작하는 URL이 아니고 DocumentRoot나 호
스트 네임 다음에 들어갈 URL 부분을 말한다. <새로운 URL>은 실제로 존재하는 URL을
의미하며 자기 자신의 서버일지라로 완전한 이름의 URL로 입력한다.
“ServerName www.linux.ac.kr”이라면 각각의 예제는 다음과 같이 포워딩한다.
결과 1 : http://www.linux.ac.kr/kernel → http://kernel.linux.ac.kr
결과 2 : http://www.linux.ac.kr/linux/kernel.html → http://kernel.linux.ac.kr
결과 3 : http://www.linux.ac.kr/~study → http://www.linux.ac.kr/study.html
[질문]
특정 사용자 홈 페이지를 다른 URL로 매핑하고 싶습니다. HTML을 사용하지 않고 아파치
설정으로 가능합니까?
[답변]
네 가능합니다. Redirect 지시자를 활용하십시오.
예를 들어 사용자(“aaa”) 홈 디렉토리 전체를 http://www.boo.com/~aaa로 매핑하고 싶다면
아파치 설정에서 다음의 내용을 추가합니다.
Redirect /~aaa http://www.boo.com/~aaa
또한 가상 호스트까지 영향이 가므로 주의하기 바랍니다.
[팁] 가상 호스트일 경우의 Redirect 활용(완전 매핑)
<VirtualHost …>
…
Redirect /index.html http://www.someothers.com/
..
</VirtualHost>
이와 같이 DocumentRoot의 index.html 파일에 대해서 직접적으로 다른 웹 주소로 매핑한
다.
그러나 다음과 같은 경우에는 조심하도록 한다.
Redirect / http://www.someothers.com/
즉 전체를 매핑하는 경우이므로 다른 가상 호스트까지 영향을 준다는 점이다.
위의 방법은 틀린 방법은 아니지만 원하지않은 URL이동이 있을 수 있으므로
대도록이면 제일 마지막 섹션에 넣어주는것이 좋다.
특히 다음과 같이 하나의 섹션안에서 적용할 경우에는 더욱 조심해야한다.
틀린 경우(X) :
Redirect / http://www.someothers.com/
Redirect /~san2 http://san2.someothers.com/
맞는 경우(O) :
Redirect /~san2 http://san2.someothers.com/
Redirect / http://www.someothers.com/
즉 좁은 부분(/~san2)을 먼저 설정하고 나머지 부분(/)을 뒤쪽에 기입해야한다.
또한 다음의 경우도 사소한 것이지만 주의하도록 한다.
애매한 경우 :
Redirect /~san2 http://www.someothers.com/
맞는 설정
Redirect /~san2 http://www.someothers.com
또는
Redirect /~san2/ http://www.someothers.com/
즉, <이전 URL> 마지막의 “/” 문제이다.
앞의 애매한 경우를 예를 들어보자.
사용자가 다음과 같은 <이전 URL>을 요청했다고 하면,
http://www.linux.ac.kr/~san2/linux/
결과는
http://www.someothers.com//linux/
이와 같다. “//” 부분이 왜 두개가 들어가는지 지레짐작할 수 있을 것이다.
필자의 경우, 이와 같이 잘못된 URL 설정으로 아파치 프로세스가 최대치에 도달했던
경험이 있었다…….(웁…….끔찍…150개…T.T)
결론적으로 <이전 URL> 마지막 설정에 “/”이 들어간다면 <새로운 URL>의 마지막에도
“/”를 꼭 넣어두라고 권하고 싶다.
그 반대로 “/”이 들어가지 않으면 <새로운 URL>에도 “/”을 넣지 않도록 한다.