[펌] 가상주소 구현

프로그래밍/Library 2007. 11. 28. 10:55 Posted by galad
출처 블로그 > ASP
원본 http://blog.naver.com/jaupa/150013527996
블로그나 미니홈피,클럽등의 서비스를 제공함에 있어서 계정 사용자에게 가상적으로 주소를 발급하기 위한 방법입니다. 설명의 편의상 제가 개인적으로 운영하고 있는
http://nbloger.com/ 을 예로 들었습니다. 그리고 다음 두가지 형태로 분류하여 설명하도록 하겠습니다.
 
1. http://아이디.nbloger.com
 
이 형태는 윈도우즈 DNS 상의 편집을 필요로 합니다. 즉, * 라는 host 명을 가지는 호스트를 추가시켜 주셔야 합니다. 물론 기본적인 윈도우즈 DNS GUI 환경에서는  편집이 불가능합니다. 따라서 zone 파일을 직접 수정하셔야 합니다. zone 파일은 텍스트 형태로서 winnt/system32/dns 폴더도메인.dns 형태로 존재합니다. 예컨데 nbloger.com 이라는 zone 파일의 최하단에 다음과 같이 host 리스트들이 존재한다면..
;
;  Zone records
;
@                      A   IP
blog                  A   IP
www                 A   IP
 
최하단에 다음과 같이 추가하여 주십시오.
 
*                       A   IP
 
DNS를 새로고침 하신 이후 DNS의 MMC를 보시면 * 라는 host 가 추가된 것을 확인하실수 있습니다.
이제는 IIS에서 작업을 하셔야 합니다. IIS에서 웹사이트 추가후 웹사이트 등록정보에서 웹사이트 탭에 보시면 IP 적는란 오른쪽에 고급 이라는 버튼이 있습니다. 이 버튼을 클릭하신후 나타나는 창(고급 복수 웹사이트 구성)에서 아래와 같이 추가하여 주십시오.
 
IP : 해당 IP
포트 : 일반적으로 80
호스트헤더 이름 : 입력하지 마십시오.
 
지금까지 ID.도메인.com 형태의 접근을 해당 웹사이트로 연결시켜 주는 설정을 마쳤습니다. 마지막으로 ASP 상의 코딩이 필요합니다. 웹사이트 방문시 가장 처음 실행되는 default.asp에서 다음 예제를 참고하여 코딩하여 주십시오.
 
default.asp
<%
dim request_url,array_url
' 서버명을 받아온다. (접근자가 실제 입력한 주소)
request_url = Request.ServerVariables("SERVER_NAME")
' .을 기준으로 분리한다.
array_url = split (request_url,".")
 
if UBound (array_url) > 1 then
   ' ID.nbloger.com 형태로 host 명을 가지고 접근하는 경우
   ' array_url(0) 가 host 명 , 즉 회원 아이디입니다.
   Response.Redirect("mem.asp?blogid="&array_url(0))
else
   ' host 명 없이 nbloger.com 으로 접근한 경우
   Response.Redirect(해당 주소)
end if
%>
 
 
이 형태에서는 실제 서버상에 존재하지 않는 폴더이지만 가상적으로 하위 경로 주소를 구현합니다.
DNS 의 편집은 필요하지 않습니다. 다만 IIS 의 404 에러에 대하여 약간의 트릭을 사용하셔야 합니다.
404 에러란 웹사이트 접근자가 잘못된 경로로 접근하였을 경우 접근자에게 발생시키는 에러입니다. 자주 보셨을 것입니다.
 
이 페이지를 찾을 수 없습니다.
찾고 있는 페이지가 삭제되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다.
 
--------------------------------------------------------------------------------
 
다음을 시도해 보십시오.
 
주소 표시줄에 페이지 주소를 입력했다면 주소를 정확히 입력했는지 확인해 보십시오.
 
nbloger.com 홈 페이지를 연 다음 원하는 정보에 대한 링크를 찾으십시오.
뒤로 단추를 클릭하여 다른 링크를 시도해 보십시오.
HTTP 404 - 파일을 찾을 수 없음
Internet Information Services
 
위에 나타나는 404 에러 페이지는 실제 서버상에 존재하는 html 페이지입니다. 예컨데 접근자가 http://nbloger.com/iendev 형태로 접근하였을 경우 사실 nblog.com 서버상에는 iendev 라는 폴더가 존재하지 않습니다. 따라서 접근자에게 위와 같은 404 에러를 발생시킬 것입니다. 따라서 우리는 위의 404 에러페이지를 바꿀 필요가 있습니다.
IIS에서 웹사이트 등록정보 창의 사용자정의 오류 라는 탭을 보시면 웹사이트 접근에 대하여 발생할 수 있는 에러들에 대하여 확인하실수 있습니다. 이 창에서 404 에러에 대한 부분을 찾으신후 다음과 같이 편집하여 주십시오.
 
메시지 형식 : URL
URL : user_redirect.asp
 
user_redirect.asp 는 접근자가 404 에러를 발생시킬 경우 실행시킬 asp 파일입니다. 위 예제에서 URL 은 웹사이트 홈디렉토리 최상단을 기준으로 한 경로입니다.
이제는 user_redirect.asp 를 만드셔서 접근자의 접근주소를 해석하여 새로운 경로로 이동시켜 주기만 하면됩니다. 다음 예제를 참고하여 주십시오.
 
user_redirect.asp
<%
' 에러번호를 포함한 접근자가 입력한 주소를 받아온다. (404;해당주소 형태)
original_url= Request.ServerVariables("QUERY_STRING")
' ;를 기준으로 분리한다.
url_str = split(original_url,";")
' 분리된 오른쪽 문자열(접근자가 실제로 브라우저상에 입력한 주소)
array_url = split(url_str(1),"/")
' 다시 분리된 문자열에서 아이디를 추출한후 특정 위치로 이동시킨다.
Response.Redirect("user_blog.asp?blogid=" & array_url(3) )
%>