URL 다시 쓰기 모듈 사용
로 루슬란 야쿠셰프
URL 다시 쓰기 모듈 정보
IIS 7 이상용 Microsoft URL 재작성 모듈 2.0을 사용하면 IIS 관리자가 사용자가 기억하기 쉽고 검색 엔진을 쉽게 찾을 수 있는 친숙한 URL에 요청 URL을 매핑하는 강력한 사용자 지정 규칙을 만들 수 있습니다. URL 다시 쓰기 모듈을 사용하여 URL 조작 작업을 수행할 수 있습니다. 그 중 일부는 다음과 같습니다.
- 복잡한 URL을 간단하고 일관된 웹 주소로 변환하는 강력한 규칙을 정의합니다.
- 웹 애플리케이션 URL을 쉽게 바꾸어 사용자 및 검색 엔진에 친숙한 결과를 생성합니다.
- HTTP 헤더 및 IIS 서버 변수를 기반으로 URL을 다시 작성합니다.
- 리디렉션을 수행하거나, 사용자 지정 응답을 보내거나, 다시 쓰기 규칙에 표현된 논리에 따라 HTTP 요청을 중지합니다.
- URL 세그먼트 또는 요청 메타데이터를 기반으로 웹 사이트 콘텐츠에 대한 액세스를 제어합니다.
URL 다시 쓰기 모듈은 사용자 고유의 IIS 서버와 Microsoft의 Azure 웹 사이트 클라우드 플랫폼에 설치할 수 있는 다운로드로 사용할 수 있습니다.
URL 다시 쓰기 2.0 기능
Microsoft URL 다시 쓰기 모듈 2.0에는 다음과 같은 주요 기능이 포함되어 있습니다.
- 규칙 기반 URL 다시 쓰기 엔진입니다. 다시 쓰기 규칙은 요청 URL을 분석하고 요청 URL이 정의된 규칙과 일치할 때 URL을 다시 작성하도록 매핑하는 데 사용되는 논리를 정의합니다. 웹 서버 및 사이트 관리자는 다시 쓰기 규칙 집합을 사용하여 URL 다시 쓰기 논리를 정의할 수 있습니다.
- 정규식 패턴 일치입니다. 다시 쓰기 규칙은 ECMA-262에 정의된 패턴 일치에 정규식 구문을 사용할 수 있습니다.
- 와일드카드 패턴 일치입니다. 다시 쓰기 규칙은 패턴 일치에 와일드카드 구문을 사용할 수 있습니다.
- 전역 및 분산 재작성 규칙입니다. URL 다시 쓰기는 전역 규칙을 사용하여 서버 전체 URL 재작성 논리를 정의합니다. 이러한 규칙은 applicationHost.config 파일 내에서 정의되며 구성 계층 구조의 하위 수준에서 구성된 규칙을 대체합니다. 또한 이 모듈은 분산 규칙을 사용하여 특정 구성 범위와 관련된 URL 다시 쓰기 논리를 정의합니다. Web.config 파일을 사용하여 모든 구성 수준에서 이 유형의 규칙을 정의할 수 있습니다.
- 서버 변수 및 HTTP 헤더에 대한 액세스 서버 변수 및 HTTP 헤더는 현재 HTTP 요청에 대한 추가 정보를 제공합니다. 이 정보는 다시 쓰기 규칙을 구성하거나 출력 URL을 작성하는 데 사용할 수 있습니다.
- 다양한 규칙 작업. 규칙은 URL을 다시 작성하는 대신 HTTP 리디렉션 발급, 요청 중단 또는 HTTP 클라이언트에 사용자 지정 상태 코드를 보내는 등의 다른 작업을 수행할 수 있습니다.
- IIS 커널 모드 및 사용자 모드 출력 캐싱을 지원합니다. IIS 출력 캐싱은 웹 애플리케이션에 대한 상당한 성능 향상을 제공합니다. URL 다시 쓰기 모듈은 두 가지 유형의 출력 캐싱과 완전히 호환됩니다. 즉, 다시 작성된 URL에 대한 응답을 안전하게 캐시하여 URL 재작성을 사용하는 웹 애플리케이션의 성능을 높일 수 있습니다.
- 문자열 조작 함수입니다. 기본 제공 문자열 조작 함수를 사용하여 URL을 소문자로 변환하고 URL 인코딩 및 디코딩을 수행할 수 있습니다.
- 맵을 다시 작성합니다. 다시 쓰기 맵은 이름-값 쌍의 임의의 컬렉션입니다. 다시 쓰기 규칙 내에서 다시 쓰기 맵을 사용하여 대체 URL을 생성할 수 있습니다. 다시 쓰기 맵은 정적 문자열을 사용하는 대규모 재작성 규칙 집합이 있는 경우에 특히 유용합니다(즉, 패턴 일치가 사용되지 않음). 이러한 경우 간단한 다시 쓰기 규칙의 큰 집합을 정의하는 대신 입력 URL을 키로 사용하고 대체 URL을 값으로 사용하여 다시 쓰기 맵에 모든 매핑을 넣을 수 있습니다. 그런 다음 다시 쓰기 맵을 참조하는 하나의 다시 쓰기 규칙을 사용하여 입력 URL을 기반으로 대체 URL을 조회할 수 있습니다.
- 요청 추적 지원이 실패했습니다. IIS 실패한 요청 추적을 사용하여 URL 다시 쓰기와 관련된 오류를 해결할 수 있습니다.
- 규칙 템플릿. 규칙 템플릿은 URL 재작성 모듈 사용자 인터페이스에 대한 확장으로, 특정 작업에 대한 다시 쓰기 규칙 만들기를 간소화합니다. 이 모듈에는 3개의 규칙 템플릿이 포함되어 있으며, 사용자 지정 템플릿의 개수에 따라 연결도 지원합니다.
- 정규식 및 와일드카드 패턴을 테스트하기 위한 UI(사용자 인터페이스)입니다. 규칙 패턴을 테스트하기 위한 UI는 모듈과 함께 제공됩니다. UI를 사용하면 다시 쓰기 규칙에서 정규식 또는 와일드카드 패턴의 결과를 빠르게 확인할 수 있습니다. 패턴 일치와 관련된 문제 해결 및 디버깅에 UI를 사용할 수도 있습니다.
- 규칙을 다시 작성하고 맵을 다시 쓰기 위한 UI입니다. IIS 관리자에서 URL 다시 쓰기 모듈을 사용하여 규칙을 다시 작성하고 맵을 다시 작성하고 맵을 추가, 제거 및 편집할 수 있습니다.
- mod_rewrite 규칙을 가져오기 위한 UI입니다. URL 다시 쓰기 모듈에는 다시 쓰기 규칙을 mod_rewrite 형식에서 IIS 형식으로 변환하기 위한 UI가 포함되어 있습니다.
URL 다시 쓰기 모듈을 가져올 위치
자세한 내용 및 모듈을 다운로드하려면 URL 다시 쓰기 확장 홈 페이지를 참조 하세요.
Go Live 릴리스에서 업그레이드
URL 재작성 모듈의 Go Live 릴리스가 이미 설치된 경우 설치 패키지는 URL 다시 쓰기 버전 2.0으로 업그레이드합니다. ApplicationHost.config 및 Web.config 파일의 모든 다시 쓰기 규칙은 유지됩니다.
ASP.NET 업데이트
URL 다시 쓰기 모듈 설치 관리자 패키지에는 URL 다시 쓰기 모듈과 관련된 ASP.NET 버그를 수정하는 ASP.NET 업데이트가 포함되어 있습니다. 특히 업데이트에는 다음 버그에 대한 수정 사항이 포함되어 있습니다.
- ~ ASP.NET 웹 서버 컨트롤의 연산자는 URL 다시 쓰기를 사용할 때 잘못 확인됩니다.
- ASP.NET SiteMap.CurrentNode 속성은 sitemap에 가상 URL이 포함된 경우 null을 반환합니다.
업데이트는 URL 다시 쓰기 모듈이 설치되는 컴퓨터에 .NET Framework 버전 3.5 SP1 이상이 있는 경우에만 적용됩니다. URL 다시 쓰기 모듈을 설치한 후 필요한 버전의 .NET Framework를 설치하는 경우 URL 다시 쓰기 모듈 설치 관리자를 실행한 다음 설치 관리자 대화 상자에서 복구 옵션을 선택하여 ASP.NET 업데이트를 적용할 수 있습니다.
URL 다시 쓰기와 관련된 이러한 문제 및 기타 ASP.NET 문제에 대한 자세한 내용은 ASP.NET Web Forms에 대한 URL 다시 쓰기를 참조 하세요.
모듈 사용
이 문서에서는 URL 다시 쓰기 모듈의 기능을 설명하고 이를 사용하여 일반적인 URL 다시 쓰기 시나리오를 구현하는 방법을 설명합니다.
기본 사항 학습
참조 및 지침
- URL 다시 쓰기 모듈 구성 참조
- URL 다시 쓰기 및 ASP.NET 라우팅
- URL 다시 쓰기 및 요청 필터링
- ASP.NET Web Forms에 대한 URL 다시 쓰기
- URL 다시 쓰기 모듈에 대한 규칙 템플릿 개발
연습 동영상
Go Live 릴리스 이후 변경 내용
Go Live 릴리스 이후 URL 다시 쓰기 모듈에 다음과 같은 추가, 변경 및 중요한 버그 수정이 수행되었습니다.
- UrlEncode 및 UrlDecode 문자열 조작 함수가 추가되었습니다.
- 서버 변수 UNENCODED_URL 통해 원시 원본 URL에 대한 액세스를 제공했습니다. 이제 이 서버 변수에는 웹 브라우저에서 요청한 대로 정확하게 인코딩된 원시 URL이 포함됩니다.
- ARR(애플리케이션 요청 라우팅)에 대한 다시 쓰기 규칙을 구성하기 위한 UI가 추가되었습니다.
- URL 다시 쓰기 모듈의 Go Live 릴리스에서 현재 위치 업그레이드에 대한 지원이 추가되었습니다.
- 다시 쓰기 규칙을 캐싱할 때 과도한 메모리 사용을 방지하기 위해 내부 캐시를 정리하는 기능이 추가되었습니다.
- ASCII가 아닌 문자를 포함하는 URL의 다시 쓰기와 관련된 버그가 수정되었습니다.
- 대/소문자를 구분하지 않는 패턴에 대해 문자 범위가 잘못 평가되는 정규식을 처리하는 버그가 수정되었습니다.
- IIS FastCGI 모듈에 대한 업데이트를 설치 관리자 패키지에 포함했습니다.
- 설치 관리자 패키지에 System.Web.dll 대한 업데이트를 포함했습니다.
- IIS SetUri 함수에 대한 업데이트를 설치 관리자 패키지에 포함했습니다.
알려진 문제
- REQUEST_URI 서버 변수를 사용하는 mod_rewrite 규칙은 가져오기 규칙 기능을 다시 작성하는 URL을 사용하여 가져올 때 제대로 작동하지 않을 수 있습니다. 가져온 규칙 사용을 수정하려면 텍스트 편집기를 사용하여 해당 규칙이 포함된 Web.config 파일을 열 수 있습니다. 섹션을
<rewrite>
찾은 다음 해당 섹션 내에서 문자열 "{SCRIPT_NAME}"의 모든 인스턴스를 문자열 "{URL}"로 바꿉니다. - 다이제스트 인증은 URL 다시 쓰기 모듈에서 사용할 수 없습니다.
- ASP.NET Forms 인증은 리디렉션에 다시 쓴 URL을 사용합니다. 예를 들어 요청된 URL이 "/article.htm"이고 URL 다시 쓰기 모듈이 양식 인증으로 보호되는 "/article.aspx"로 URL을 다시 작성하는 경우 ASP.NET "/login.aspx?로 리디렉션됩니다. ReturnUrl=%2Farticle.aspx".
- ASP.NET Forms 인증의 자동 검색 모드는 리디렉션에 다시 작성된 URL을 사용합니다. 예를 들어 요청된 URL이 "/article.htm"이고 URL 재작성 모듈이 양식 인증으로 보호되는 URL을 "/article.aspx"로 다시 작성하는 경우 ASP.NET "/article.aspx? AspxAutoDetectCookieSupport=1".
- ASP.NET Forms 인증의 UseUri 모드는 리디렉션에 다시 쓴 URL을 사용합니다. 예를 들어 요청된 URL이 "/article.htm"이고 URL 다시 쓰기 모듈이 양식 인증으로 보호되는 "/article.aspx"로 URL을 다시 작성하는 경우 ASP.NET "/(S(vy2ebt45imfkmjjwboow3l55)))/article.aspx"로 리디렉션됩니다.
- ASP.NET URI 기반 인증 또는 쿠키 없는 세션 상태를 사용할 때 원래 URL로 다시 씁니다. 예를 들어 "/(S(vy2ebt45imfkmjwboow3l55))/article.htm"에 대한 요청이 이루어지고 URL 재작성 모듈이 "/article.htm"를 "/article.aspx"로 다시 작성하면 ASP.NET URL을 "/article.htm"로 다시 작성하여 "404 - 파일을 찾을 수 없음" 오류가 발생할 수 있습니다.
- IIS DefaultDocument 모듈은 URL 다시 쓰기 모듈이 폴더에 다시 쓸 때 다시 작성된 URL로 리디렉션할 수 있습니다. 예를 들어 다시 쓰기 규칙의 대체 URL이 "/folder1/folder2"이고 이러한 폴더가 파일 시스템에 있고 기본 문서가 구성된 경우 DefaultDocument 모듈은 웹 클라이언트를 "/folder1/folder2/"로 리디렉션하여 다시 쓴 URL을 노출합니다. 이런 일이 발생하지 않도록 하려면 폴더에 다시 쓸 때 대체 URL 끝에 "/"를 사용합니다(예: "/folder1/folder2/").