Share via


다시 쓰기 맵을 사용하여 규칙 - 규칙 템플릿

루슬란 야쿠셰프

규칙 템플릿은 특정 시나리오에 대해 하나 이상의 다시 쓰기 규칙을 만드는 간단한 방법을 제공하는 데 사용됩니다. URL 재작성 모듈에는 몇 가지 일반적인 사용 시나리오에 대한 몇 가지 규칙 템플릿이 포함되어 있습니다. 해당 URL 재작성 모듈 UI 외에도 사용자 지정 규칙 템플릿을 연결하기 위한 프레임워크를 제공합니다. 이 연습에서는 URL 다시 쓰기 모듈에 포함된 "맵 다시 쓰기 규칙" 템플릿을 사용하는 방법을 안내합니다.

사전 요구 사항

이 연습을 수행하려면 다음 필수 구성 요소가 필요합니다.

  1. ASP.NET 역할 서비스를 사용하도록 설정된 IIS 7.0 이상;
  2. URL 다시 쓰기 모듈 Go Live 릴리스가 설치되어 있습니다.

테스트 웹 페이지 설정

간단한 테스트 asp.net 페이지를 사용하여 템플릿에서 만든 규칙이 올바르게 작동하는지 확인합니다. 테스트 페이지는 단순히 웹 서버 변수를 읽고 브라우저에서 해당 값을 출력합니다.

다음 ASP.NET 코드를 복사하여 article.aspx라는 파일의 폴더에 넣 %SystemDrive%\inetpub\wwwroot\ 습니다.

<%@ 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 페이지가 올바르게 렌더링되었는지 찾아보고 검사.

U RL 다시 쓰기 모듈 테스트 페이지 웹 페이지의 스크린샷

규칙 템플릿을 사용하여 다시 쓰기 규칙 생성

"다시 쓰기 맵을 사용한 규칙" 템플릿을 사용하여 원래 요청된 URL과 다시 작성되거나 리디렉션된 URL 간에 정적 매핑을 저장하기 위해 다시 쓰기 맵을 사용하는 재작성 및 리디렉션 규칙을 생성할 수 있습니다. 다시 쓰기 맵 사용에 대한 자세한 내용은 "URL 다시 쓰기 모듈 구성 참조" 및 "URL 다시 쓰기 모듈에서 맵 다시 쓰기 사용"을 참조하세요.

이 템플릿을 사용하려면 다음 단계를 수행합니다.

  1. IIS 관리자로 이동

  2. "기본 웹 사이트" 선택

  3. 기능 보기에서 "URL 다시 쓰기"를 클릭합니다.
    U R L 다시 쓰기 옵션이 강조 표시된 기본 웹 사이트 홈 화면의 스크린샷

  4. 오른쪽의 "작업" 창에서 "규칙 추가..."를 클릭합니다.
    규칙 추가 옵션에 포커스가 있는 U RL 다시 쓰기 화면의 스크린샷

  5. "규칙 추가" 대화 상자에서 "맵 다시 쓰기를 사용하여 규칙"을 선택하고 "확인"을 클릭합니다.
    다시 쓰기 맵 옵션이 강조 표시된 규칙 추가 대화 상자의 스크린샷

  6. "다시 쓰기 맵을 사용하여 규칙 추가" 대화 상자의 드롭다운 목록에서 "다시 쓰기"를 선택합니다. "다시 쓰기 맵 선택:" 콤보 상자에서 새 다시 쓰기 맵의 이름을 StaticRewrites로 지정합니다.
    다시 쓰기 맵을 사용하여 규칙 추가 대화 상자의 스크린샷

  7. "확인"을 클릭합니다. 이렇게 하면 지정된 이름의 다시 쓰기 맵과 맵을 다시 작성하는 맵을 참조하는 "StaticRewrites에 대한 규칙 1 다시 쓰기"라는 이름의 다시 쓰기 규칙이 만들어집니다.

  8. "확인"을 클릭하면 다시 쓰기 맵에 대한 매핑 항목을 지정할 수 있는 페이지로 이동합니다. "매핑 항목 추가..."를 클릭합니다. 오른쪽의 작업 창에서 매핑 항목의 원래 값과 새 값을 각각 "/article1" 및 "/article.aspx?id=1&title=some-title"으로 입력합니다.
    원래 값 및 새 값 필드를 보여 주는 매핑 항목 추가 대화 상자의 스크린샷

  9. 이전 단계를 반복하여 다음과 같이 두 개의 매핑 항목을 추가합니다.

    원래 값: 새 값:
    /some-title /article.aspx?id=1&title=some-title
    /post/some-title.html /article.aspx?id=1&title=some-title

이 단계를 완료한 후에는 파일에서 C:\inetpub\wwwroot\web.config 만든 다음 다시 쓰기 맵 및 다시 쓰기 규칙이 표시됩니다.

<rewrite>
    <rewriteMaps>
        <rewriteMap name="StaticRewrites">
            <add key="/article1" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/some-title" value="/article.aspx?id=1&amp;title=some-title" />
            <add key="/post/some-title.html" value="/article.aspx?id=1&amp;title=some-title" />
        </rewriteMap>
    </rewriteMaps>
    <rules>
        <rule name="Rewrite Rule 1 for StaticRewrites" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
            </conditions>
            <action type="Rewrite" url="{C:1}" appendQueryString="False"/>
        </rule>
    </rules>
</rewrite>

규칙 테스트

"StaticRewrites" 맵을 사용하는 생성된 다시 쓰기 규칙을 테스트하려면 웹 브라우저를 열고 다음 URL을 요청합니다.

http://localhost/article1
http://localhost/some-title
http://localhost/post/some-title.html

위의 URL 중 하나라도 다시 쓰기 맵에 정의된 매핑에 따라 URL을 다시 작성해야 합니다. 결과는 다음 페이지와 같아야 합니다.

원래 U R L 및 최종 U R L 필드를 보여 주는 U R L 다시 쓰기 모듈 테스트 페이지의 스크린샷.

요약

이 연습에서는 URL 다시 쓰기 모듈에 포함된 "맵 다시 쓰기 규칙" 템플릿을 사용하여 다시 쓰기 맵을 사용하여 다시 쓰기 규칙을 생성하는 방법을 알아보았습니다. 이 규칙 템플릿은 웹 애플리케이션에 대한 많은 수의 정적 다시 쓰기 및 리디렉션 매핑을 포함할 수 있는 규칙 및 자리 표시자 맵을 만드는 데 사용할 수 있습니다.