書き換えマップを使用したルール - ルール テンプレート
作成者: Ruslan Yakushev
ルール テンプレートは、特定のシナリオに対して 1 つ以上の書き換えルールを作成する簡単な方法を提供するために使用されます。 URL 書き換えモジュールには、一般的な使用シナリオ用のルール テンプレートがいくつか含まれています。 その URL Rewrite Module UI に加えて、カスタム ルール テンプレートを接続するためのフレームワークも用意されています。 このチュートリアルでは、URL Rewrite Module に含まれている "書き換えマップを使用したルール" テンプレートを使用する方法について説明します。
前提条件
このチュートリアルでは、次の前提条件が必要です:
- ASP.NET 役割サービスが有効になっている IIS 7.0 以降;
- 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
にアクセスし、ページがブラウザーで正しくレンダリングされたことを確認します。
ルール テンプレートを使用して書き換えルールを生成する
"書き換えマップを使用したルール" テンプレートを使用すると、書き換えマップを使用して、最初に要求された URL と書き換えられた URL またはリダイレクトされた URL の間に静的マッピングを格納する書き換えルールとリダイレクト ルールを生成できます。 書き換えマップの使用方法の詳細については、「URL Rewrite Module 構成リファレンス」および「URL Rewriet Module での書き換えマップの使用」を参照してください。
このテンプレートを使用するには、次の手順に従います。
IIS マネージャーに移動します。
[既定の Web サイト] を選択します。
[書き換えマップを使用してルールを追加] ダイアログで、ドロップダウン リストの [書き換え] を選択します。 [書き換えマップの選択] コンボ ボックスで、新しい書き換えマップの名前を StaticRewrites として指定します。
[OK] をクリックします。 これにより、指定された名前の書き換えマップと、その書き換えマップを参照する "StaticRewrites の書き換えルール 1" という名前の書き換えルールが作成されます。
[OK] をクリックすると、書き換えマップのマッピング エントリを指定できるページが表示されます。 [マッピング エントリの追加...] をクリックします。右側の [操作] ウィンドウで、マッピング エントリの元の値と新しい値をそれぞれ "/article1"、"/article.aspx?id=1&title=some-title" として入力します。
前の手順を繰り返して、次のようにさらに 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&title=some-title" />
<add key="/some-title" value="/article.aspx?id=1&title=some-title" />
<add key="/post/some-title.html" value="/article.aspx?id=1&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 が書き換えられます。 結果は以下のページのようになります。
まとめ
このチュートリアルでは、URL 書き換えモジュールに含まれている "書き換えマップを使用したルール" テンプレートを使用して、書き換えマップで書き換えルールを生成する方法について説明しました。 このルール テンプレートは、Web アプリケーション用の多数の静的な書き換えおよびリダイレクト マッピングを含むことができるルールとプレースホルダー マップを作成するために使用できます。