書き換えマップを使用したルール - ルール テンプレート

作成者: Ruslan Yakushev

ルール テンプレートは、特定のシナリオに対して 1 つ以上の書き換えルールを作成する簡単な方法を提供するために使用されます。 URL 書き換えモジュールには、一般的な使用シナリオ用のルール テンプレートがいくつか含まれています。 その URL Rewrite Module UI に加えて、カスタム ルール テンプレートを接続するためのフレームワークも用意されています。 このチュートリアルでは、URL Rewrite Module に含まれている "書き換えマップを使用したルール" テンプレートを使用する方法について説明します。

前提条件

このチュートリアルでは、次の前提条件が必要です:

  1. ASP.NET 役割サービスが有効になっている IIS 7.0 以降;
  2. URL Rewrite Module Go Live リリースがインストールされていること。

テスト Web ページの設定

単純なテスト asp.net ページを使用して、テンプレートによって作成されたルールが正しく機能することを確認します。 このテスト ページは、単に Web サーバー変数を読み取り、その値をブラウザーに出力するだけです。

次の 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 R L Rewrite Module Test Page Web ページのスクリーンショット。

ルール テンプレートを使用して書き換えルールを生成する

"書き換えマップを使用したルール" テンプレートを使用すると、書き換えマップを使用して、最初に要求された URL と書き換えられた URL またはリダイレクトされた URL の間に静的マッピングを格納する書き換えルールとリダイレクト ルールを生成できます。 書き換えマップの使用方法の詳細については、「URL Rewrite Module 構成リファレンス」および「URL Rewriet Module での書き換えマップの使用」を参照してください。

このテンプレートを使用するには、次の手順に従います。

  1. IIS マネージャーに移動します。

  2. [既定の Web サイト] を選択します。

  3. 機能ビューで、[URL 書き換え] をクリックします。
    [URL 書き換え] オプションが強調表示されている [既定の Web サイト ホーム] 画面のスクリーンショット。

  4. 右側の [操作] ウィンドウで、"ルールの追加..." をクリックします。
    [ルールの追加] オプションにフォーカスがある [U R L の書き換え] 画面のスクリーンショット。

  5. [ルールの追加] ダイアログで、[書き換えマップを使用したルール] を選択し、[OK] をクリックします。
    書き換えマップ オプションが強調表示されている [ルールの追加] ダイアログのスクリーンショット。

  6. [書き換えマップを使用してルールを追加] ダイアログで、ドロップダウン リストの [書き換え] を選択します。 [書き換えマップの選択] コンボ ボックスで、新しい書き換えマップの名前を StaticRewrites として指定します。
    [マップの書き換えによるルールの追加] ダイアログのスクリーンショット。

  7. [OK] をクリックします。 これにより、指定された名前の書き換えマップと、その書き換えマップを参照する "StaticRewrites の書き換えルール 1" という名前の書き換えルールが作成されます。

  8. [OK] をクリックすると、書き換えマップのマッピング エントリを指定できるページが表示されます。 [マッピング エントリの追加...] をクリックします。右側の [操作] ウィンドウで、マッピング エントリの元の値と新しい値をそれぞれ "/article1"、"/article.aspx?id=1&title=some-title" として入力します。
    [元の値] フィールドと [新しい値] フィールドを示す [マッピング エントリの追加] ダイアログのスクリーンショット。

  9. 前の手順を繰り返して、次のようにさらに 2 つのマッピング エントリを追加します。

    元の値: 新しい値:
    /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" マップを使用する生成された書き換えルールをテストするには、Web ブラウザーを開き、次のいずれかの URL を要求します。

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

上記のいずれかの URL では、書き換えマップで定義されているマッピングに従って URL が書き換えられます。 結果は以下のページのようになります。

[元の U R L] フィールドと [Final U R L] フィールドが表示されている [U R L の書き換えモジュール テスト] ページのスクリーンショット。

まとめ

このチュートリアルでは、URL 書き換えモジュールに含まれている "書き換えマップを使用したルール" テンプレートを使用して、書き換えマップで書き換えルールを生成する方法について説明しました。 このルール テンプレートは、Web アプリケーション用の多数の静的な書き換えおよびリダイレクト マッピングを含むことができるルールとプレースホルダー マップを作成するために使用できます。