URL Rewrite Module 2.1 URL 재 작성 모듈 규칙 작성

선 결 조건
본 연습 은 다음 과 같은 선 결 조건 을 만족 시 켜 야 한다.
IIS 설치 URL Rewrite Module 2.1
짧 은 주소
페이지 다운로드
http://www.iis.net/extensions/URLRewrite
링크 다운로드
https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads
https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi
ASP.NET 캐릭터 서 비 스 를 사용 한 IIS 7 이상 버 전 입 니 다.
URL 재 작성 모듈 이 설치 되 었 습 니 다.더 많은 정 보 는 URL 재 작성 모듈 을 참조 하 십시오.
테스트 페이지 설정
URL 재 작성 모듈 이 어떻게 작 동 하 는 지 보 여주 기 위해 서 는 간단 한 테스트 ASP.NET 페이지 를 사용 할 것 입 니 다.이 페이지 는 웹 서버 변 수 를 읽 고 브 라 우 저 에서 값 을 출력 합 니 다.
다음 ASP.NET 코드 를 복사 하여 article.aspx 라 는 파일 의%System Drive%\inetpub\www wroot\폴 더 에 넣 습 니 다.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
  <h1>URL Rewrite Module Test Page</h1>
  <table>
   <tr>
     <th>Server Variable</th>
     <th>Value</th>
   </tr>
   <tr>
     <td>Original URL: </td>
     <td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
   </tr>
   <tr>
     <td>Final URL: </td>
     <td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
   </tr>
  </table>
</body>
</html>
이 파일 을 복사 한 후 탐색http://localhost/article.aspx웹 페이지 가 브 라 우 저 에 올 바 르 게 나타 나 는 지 확인 합 니 다.
재 작성 규칙 만 들 기
간단 한 재 작성 규칙 을 만 들 것 입 니 다.이 규칙 은 다음 형식 으로 URL 을 다시 쓸 것 입 니 다.
http://localhost/article/342/some-article-title
지:
http://localhost/article.aspx?id=342&title=some-article-title。
IIS 관리자 의 URL 재 작성 UI 를 사용 하여 재 작성 규칙 을 만 들 것 입 니 다.이 를 위해 다음 절차 에 따라 조작 하 십시오.
1.IIS 관리자 로 이동 합 니 다.
2.기본 사 이 트 를 선택 합 니 다.
3.'기능 보기'에서'URL 재 작성'을 클릭 합 니 다.

4.오른쪽'조작'창 에서'규칙 추가...'를 누 르 십시오.

5.'규칙 추가'대화 상자 에서'공백 규칙'을 선택 하고'확인'을 누 르 십시오.

현재,실제 재 작성 규칙 을 정의 해 야 합 니 다.URL 재 작성 모듈 에서 필요 한 네 가지 정 보 를 지정 하여 재 작성 규칙 을 정의 합 니 다.
  • 규칙 명칭.
  • URL 문자열 과 일치 하 는 모드 입 니 다.
  • 선택 가능 한 조건
  • 일치 모드 를 실행 하고 모든 조건 에서 성공 여 부 를 검사 할 때 실행 할 작업 을 수행 합 니 다.
  • 명명 규칙
    '이름'텍스트 상자 에 이 규칙 을 표시 하 는 유일한 이름 을 입력 하 십시오.예 를 들 어'article.aspx 로 다시 쓰기'입 니 다.

    정의 모드
    패턴 텍스트 상자 에 다음 문자열 을 입력 하 십시오:
    ^article/([0-9]+)/([_0-9a-z-]+)
    이 문자열 은 다음 조건 을 만족 시 키 는 모든 URL 문자열 과 일치 하 는 정규 표현 식 입 니 다.
  • 은 문자'article/'의 서열 로 시작한다.
  • 은 첫 번 째'/'다음 에 하나 이상 의 숫자 문 자 를 포함한다.
  • 은 두 번 째"/"다음 에 하나 이상 의 자모 숫자 나""을 포함한다.문자
  • 정규 표현 식 의 일부분 은 괄호 안에 있 음 을 주의 하 십시오.이 괄호 들 은 캡 처 그룹 을 만 들 고 규칙 에 역방향 참조 로 참조 할 수 있 습 니 다.
    정의 동작
    우리 가 만 들 규칙 은 URL 을 다시 써 야 하기 때문에'작업'그룹 상자 에 열 거 된'재 작성 작업'형식 을 선택 하 십시오."URL 다시 쓰기:"텍스트 상자 에 다음 문자열 을 입력 하 십시오.
    article.aspx?id={R:1}&title={R:2}
    이 문자열 은 입력 한 URL 을 다시 쓸 새 값 을 지정 합 니 다.검색 문자열 매개 변수 값 에 대해 서 는{R:1}과{R:2}을 사 용 했 습 니 다.괄호 를 사용 하여 규칙 모드 에서 정 의 된 캡 처 그룹 에 대한 역방향 참조 입 니 다.
    모든 다른 설정 의 기본 값 을 유지 합 니 다."입 소 규칙 편집'속성 페이지 는 다음 페이지 와 유사 해 야 합 니 다.

    오른쪽 에 있 는'응용'을 누 르 면 규칙 을 저장 합 니 다.
    프로필 의 재 작성 규칙 보기
    재 작성 규칙 은 ApplicationHost.config 파일 이나 Web.config 파일 에 저 장 됩 니 다.방금 만 든 규칙 의 설정 을 확인 하려 면%SystemDrive%\inetpub\\www wroot 의 웹 config 파일 을 열 어 주 십시오.이 파일 에서 이 규칙 의 정 의 를 포함 하 는 부분 을 보 셔 야 합 니 다:
    
    <rewrite>
     <rules>
     <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
     </rule>
     </rules>
    </rewrite>
    위의 문법 은 Windows Azure 사이트(WAWS)의 Web.config 에 URL 재 작성 을 설정 하 는 데 도 적 용 됩 니 다.
    테스트 재 작성 규칙
    이 규칙 이 URL 을 올 바 르 게 다시 썼 는 지 확인 하려 면 웹 브 라 우 저 를 열 고 아래 URL 을 요청 하 십시오.
    http://localhost/article/234/some-title
    웹 서버 의 재 작성 규칙 이 원본 URL 을 Article.aspx 로 변경 하고'234'와'some-title'을 검색 문자열 매개 변수 값 으로 전달 하 는 것 을 보 셔 야 합 니 다.

    리 셋 규칙 만 들 기
    현재,우 리 는 리 셋 규칙 을 만 들 것 입 니 다.이 규칙 은 다음 과 같은 형식 으로 모든 URL 을 리 셋 할 것 입 니 다.
    http://localhost/blog/some-other-title/543
    형식 은 다음 과 같 습 니 다.
    http://localhost/article/543/some-other-title
    규칙 을 바 꾸 면 한 개 이상 의 URL 이 웹 페이지 를 가리 킬 수 있 습 니 다.
    이 를 위해 IIS 관리자 에서 URL 재 작성 기능 보기 UI 를 열 어 주 십시오."규칙 추가..."를 누 른 다음"공백 규칙"템 플 릿 을 다시 선택 하 십시오.
    "편집 규칙"페이지 에 다음 내용 을 입력 하 십시오.
  • 이름:블 로그 에서 방향 을 바 꿉 니 다.(이것 은 규칙 의 유일한 이름 입 니 다.)
  • 모드:^blog/([0-9a-z-]+)/([0-9]+)(이 모드 는'blog'로 시작 하 는 URL 문자열 과 일치 하 며 URL 의 두 번 째 부분 과 세 번 째 부분 을 역방향 으로 캡 처 합 니 다.)
  • 행동:방향 변경(방향 변경 동작 은 방향 변경 응답 을 브 라 우 저 로 보 냅 니 다.)
  • 재 설정 URL:article/{R:2}/{R:1}(이 대체 문자열 은 재 설정 URL 로 사 용 됩 니 다.리 버스 인덱스 를 사용 하여 정렬 모드 와 일치 하 는 동안 캡 처 한 원본 URL 을 유지 합 니 다.)
  • 이름,스타일,동작 을 입력 하 십시오.다음 과 같 습 니 다.

    재 설정 URL 을 입력 하 십시오.아래 와 같 습 니 다.

    모든 다른 설정 의 기본 값 을 유지 합 니 다.오른쪽 에 있 는'응용'을 누 르 면 규칙 을 저장 합 니 다.
    테스트 리 셋 규칙
    이 규칙 이 요청 을 정확하게 재 설정 하 였 는 지 확인 하려 면 웹 브 라 우 저 를 열 고 아래 URL 을 요청 하 십시오.
    http://localhost/blog/some-other-title/323
    보시 다시 피,http://localhost/article/323/some-other-title리 셋 규칙 을 실행 하기 때문에 브 라 우 저 는 리 셋 규칙 에 따라 요청 을 다시 썼 습 니 다.

    접근 차단 규칙 만 들 기
    Google 이 만 든 세 번 째 규칙 은 사이트 에 대한 모든 요청 을 막 는 데 사 용 됩 니 다.(이 요청 들 이 호스트 헤드 를 설정 하지 않 았 다 면)호스트 이름 대신 서버 의 IP 주 소 를 사용 하여 HTTP 요청 을 하 는 해 킹 시 도 를 방지 하려 면 이러한 유형의 규칙 이 유용 합 니 다.
    IIS 관리 자 를 사용 하지 않 은 상태 에서 이 규칙 을 만 들 것 입 니 다.%SystemDrive%\\inetpub\www wroot\\본문 첫머리 에 article.aspx 테스트 파일 에 사용 할 폴 더 에서 웹 config 파일 을 엽 니 다.이부분 을 찾 았 습 니 다.다음 규칙 을집합 에 삽입 하여 이 집합의 첫 번 째 규칙 으로 만 듭 니 다.
    
    <rule name="Fail bad requests">
     <match url=".*"/>
     <conditions>
     <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
     </conditions>
     <action type="AbortRequest" />
    </rule>
    부분 은 다음 코드 와 유사 해 야 합 니 다.
    
    <rewrite>
     <rules>
     <rule name="Fail bad requests">
      <match url=".*"/>
      <conditions>
      <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
      </conditions>
      <action type="AbortRequest" />
     </rule>
     <rule name="Redirect from blog">
      <match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
      <action type="Redirect" url="article/{R:2}/{R:1}" redirectType="Found" />
     </rule>
     <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
     </rule>
     </rules>
    </rewrite>
    우 리 는 규칙 을 분석 하여 그것 의 작용 을 이해 합 시다.

    위의 요 소 는 이 규칙 이 모든 URL 문자열 과 일치 할 것 임 을 나타 낸다.

    위의 요 소 는 규칙 에 조건 을 추가 하 였 습 니 다.이 조건 은 서버 변 수 를 읽 는 HTTPHOST 는 호스트 헤드 값 을 검색 하고 모드'localhost'와 일치 시 킨 다음 결 과 를 되 찾 습 니 다.이 조건 은 호스트 헤드 가'localhost'와 일치 하지 않 음 을 검증 하 는 것 이다.

    위의 요 소 는 URL 재 작성 모듈 에 HTTP 요청 이 끝 났 음 을 알려 줍 니 다.
    테스트 접근 차단 규칙
    이 규칙 을 테스트 하려 면 웹 브 라 우 저 를 열 고 https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi 을 요청 하 십시오.서버 에서 응답 을 받 지 못 한 브 라 우 저 를 보 셔 야 합 니 다.하지만 부탁 하 시 면http://localhost/article/234/some-title웹 서버 가 성공 적 으로 응답 합 니 다.
    실패 한 디 스 플레이 는 다음 과 같 습 니 다:

    다음 과 같이 성공 적 으로 보 여 줍 니 다:

    개요
    이 연습 에서 IIS 관리 자 를 사용 하거나 웹.config 파일 을 수 동 으로 편집 하여 URL 재 작성 규칙 을 설정 하 는 방법 을 배 웠 습 니 다.이 연습 에서 만 든 규칙 은 URL 재 작성 모듈 의 중요 한 기능 을 보 여 줍 니 다.예 를 들 어 정규 표현 식 지원 과 HTTP 헤더 와 서버 변 수 를 사용 하여 재 작성 결정 을 하 는 능력 입 니 다.

    좋은 웹페이지 즐겨찾기