회원별 가상주소 발급의 구현

  • POSTED BY iendev
제목 : 회원별 가상주소 발급의 구현  (WIN+IIS+ASP 환경)
작성자 : 송준우 (http://iendev.kr)
작성 : 2004년 5월 26일 (2009년 10월 편집 후 보관)
라이센스 : CREATIVE COMMONS LICENSE

블로그나 미니홈피,클럽등의 서비스를 제공함에 있어서 계정 사용자에게 가상적으로 주소를 발급하기 위한 방법입니다. 설명의 편의상 제가 개인적으로 운영하고 있는 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에서 다음 예제를 참고하여 코딩하여 주십시오.

<%
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
%>


2. http://nbloger.com/아이디

이 형태에서는 실제 서버상에 존재하지 않는 폴더이지만 가상적으로 하위 경로 주소를 구현합니다. DNS 의 편집은 필요하지 않습니다. 다만 IIS 의 404 에러에 대하여 약간의 트릭을 사용하셔야 합니다. 404 에러란 웹사이트 접근자가 잘못된 경로로 접근하였을 경우 접근자에게 발생시키는 에러입니다. 자주 보셨을 것입니다.

이 페이지를 찾을 수 없습니다.
찾고 있는 페이지가 삭제되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다.
--------------------------------------------------------------------------------

다음을 시도해 보십시오.
주소 표시줄에 페이지 주소를 입력했다면 주소를 정확히 입력했는지 확인해 보십시오.
nbloger.com 홈 페이지를 연 다음 원하는 정보에 대한 링크를 찾으십시오.
뒤로 단추를 클릭하여 다른 링크를 시도해 보십시오.

HTTP 404 - 파일을 찾을 수 없음
Internet Information Services


위에 나타나는 404 에러 페이지는 실제 서버상에 존재하는 html 페이지입니다. 예컨데 접근자가 http://nbloger.com/iendev 형태로 접근하였을 경우 사실 nblog.com 서버상에는 iendev 라는 폴더가 존재하지 않습니다. 따라서 접근자에게 위와 같은 404 에러를 발생시킬 것입니다. 따라서 우리는 위의 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) )
%>

CREATIVE COMMONS LICENSE
Creative Commons License
RELATED POST
2004/05/26 21:00 2004/05/26 21:00
TRACKBACK URL : http://blog.iendev.kr/trackback/161
« PREV : 1 : ... 85 : 86 : 87 : 88 : 89 : NEXT »
COPYRIGHT(C) 2003-2017 iendev, ALL RIGHTS RESERVED.
TEXTCUBE REMASTERED BY iendev, IS Nature 0.1 black