ASP.NET/IIS 환경에서 URL 맵핑하기 ASP.NET

아마도 위키나 블로그에서 이런 URL을 종종 보았을 것이다.


이 URL은 사실 http://manalith.org/blog.php?date=20090227 형태로 실행되는데, 실제 URL보다 보기 좋다. 이것은 대개 아파치에서 지원하는 .htaccess 파일 형식의 RewriteRule 속성을 이용한 것이다. IIS에서는 이 기능을 기본 지원하지 않기 때문에 이렇게 하기 위해서는 조금 귀찮은 수단을 써야 하는데, 하나는 상용 [http]isapirewrite를 설치하는 것이고, 다른 하나는 MIT 라이선스로 공개되어 있는 [http]Open Source URL Rewriter for .NET / IIS / ASP.NET을 사용하는 것이다. 그밖에 널리 쓰이는 아주 단순한 방법으론(대개 사용자 아이디를 디렉터리로 매핑하기 위해) 파일시스템의 폴더를 직접 조작하는 방법이 있는데, 디렉터리가 필요한 수만큼 폴더를 만들어야 한다는 점이나 상위 디렉터리의 사용자 권한을 조정해야 한다는 점, 기존에 존재하는 폴더와 중복될 가능성 등 여러모로 좋지 않은 점들이 있다.

여기서는 후자인 [http]오픈소스 URL Rewriter를 이용하는데, 글쓰는 현재 .NET 2.0을 위한 최신 버전은 2.0rc1이다. 다운로드 페이지에 링크된 소스포지 페이지에서 다운받아 압축을 푼 다음 Bin/Release 안의 파일들을 ASP.NET 웹사이트의 Bin 폴더에 넣는다. 다음으로 Readme.txt에서 지시하는 대로 웹사이트 루트의 Web.config 파일에 기재하는데, 이때 rewriter 항목을 넣지 않으면 NullReferenceException이 발생하니 당장 지정하지 않더라도 반드시 넣어두어야 한다. 다음은 단일 디렉터리명 지정시 무조건 특정 페이지로 맵핑되게 하는 예제이다.

<rewriter>
<rewrite url="^/([^/]+)/$" to="/Test.aspx?value=$1" />
<!-- readme.txt�~W~P�~J~T <if url="/tags/(.+)" rewrite="tagcloud.aspx?tag=$1" /> �~K~]�~]~X 문�~U�~]� 보�~]��~J~T�~M� �~U~D�~^~P�~]~X �~Y~X경�~W~P�~D~\�~J~T �~O~Y�~^~Q�~U~X�~@ �~U~J�~U~X�~K�. �~X��~]��~]� �~T�~I��~V��~]~X Configuration �~D��~E~X�~W~P�~D~\�~O~D �| �| � �~^~H�~K�. -->
</rewriter>

다음으로 [http]Help 문서에 있는 설치법으로 자신의 OS에 맞게 설치하는데, 필자의 경우 Windows Server 2003을 쓰고 있으므로 [http]Installing UrlRewriter.NET on Windows Server 2003의 내용을 따라했다. 문서가 대단히 보기 쉽지만 한글판을 위해 가볍게 요약하면 :

  1. 관리 도구 - 인터넷 정보 서비스(IIS) 관리에서 자신의 웹 사이트 등록 정보 창을 연다.(웹 사이트에서 문맥 메뉴 - 속성)
  2. 홈 디렉터리 탭 - 구성을 눌러 응용 프로그램 구성창을 연다.
  3. 목록에서 확장명 .asax를 찾아 더블클릭하거나 편집 버튼을 누른다.
  4. 실행 파일 항목에 나온 DLL 경로를 복사한다.
  5. 창을 닫은 후, 이번에는 하단의 삽입버튼을 누른다.
  6. 복사된 내용을 붙여넣기 한 후, 파일이 있는지 확인체크를 제거한다.
  7. 확인을 눌러 빠져나온다.

이제 테스트를 해 보자. 위의 rewriter 설정을 그대로 복사한 사람이라면 루트 디렉터리에 Test.aspx를 만들고, 안에 <%= Request.QueryString["value"] %> 코드를 넣은 다음 http://사이트URL/Test/ 식으로 접근하면 화면에 Test라는 문자열이 표시되는 것을 볼 수 있을 것이다.

혹 URL Rewriter의 동작 원리를 알고 싶거나 직접 작성해보고 싶다면 공개된 URL Rewriter의 소스를 보거나 아래 주소를 참고하면 된다.


이 문서의 최신 내용은 위키에서 볼 수 있다.
Tag :
, , ,

Leave Comments