"Rule with Rewrite Map" ルール テンプレート
作成者 : Ruslan Yakushev
発行日 : 2008 年 8 月 29 日 (作業者 : iisteam (英語))
更新日 : 2008 年 11 月 10 日 (作業者 : iisteam (英語))
前提条件
このチュートリアルは、以下を前提としています。
- IIS 7.0 で ASP.NET 役割サービスが有効化されている。
- URL 書き換えモジュールの Go Live リリースがインストールされている。
テスト Web ページの設定
簡単なテスト用 asp.net ページを使用して、テンプレートによって作成されたルールが正しく機能することを確認します。このテスト用ページは、Web サーバー変数を読み取り、その値をブラウザーに出力します。
次の ASP.NET コードをコピーして、%SystemDrive%\inetpub\wwwroot\ フォルダーの article.aspx というファイルに貼り付けます。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<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 を参照して、ページがブラウザーに正しくレンダリングされたことを確認します。
ルール テンプレートを使用した書き換えルールの生成
"Rule with Rewrite Map" テンプレートを使用して、当初要求された URL と書き換え後の URL またはリダイレクト先の URL の静的マッピングを格納するための書き換えマップを使用する書き換えルールおよびリダイレクト ルールを生成できます。書き換えマップの使用方法については、「URL 書き換えモジュール構成のリファレンス」および「URL 書き換えモジュールでの書き換えマップの使用」を参照してください。
このテンプレートを使用するには、次の手順を使用します。
- IIS マネージャーに移動します。
- [Default Web Site] を選択します。
- 機能ビューで [URL Rewrite] をダブルクリックします。
- 右側の [操作] ウィンドウで、[Add rules] をクリックします。
- [Add Rules] ダイアログで、[Rule with Rewrite Map] を選択して、[OK] をクリックします。
- [Add rule with rewrite map] ダイアログのドロップ ダウン リストから [Rewrite] を選択します。[Choose the rewrite map] コンボ ボックスで、新規書き換えマップ名を「StaticRewrites」と指定します。
- [OK] をクリックします。指定された名前の書き換えマップ、およびこの書き換えマップを参照する "Rewrite Rule 1 for StaticRewrites" という名前の書き換えルールが作成されます。
- [OK] をクリックすると、書き換えマップのマッピング エントリを指定するページに移動します。(*) 右側の [操作] ウィンドウの [Add Mapping Entry] をクリックし、マッピング エントリの [Original Value] および [New Value] にそれぞれ「/article1」および「/article.aspx?id=1&title=some-title」と入力します。
(*) 書き換えマップのマッピング エントリを指定するページが表示されない場合は、右側の [操作] ウィンドウの[View Rewrite Maps...] をクリックし、URL Rewrite Map の一覧を表示し、目的のマップをダブルクリックするか、右側の [操作] ウィンドウの [Edit Rewrite Map] をクリックする。
- 上の手順を繰り返して、次の 2 つのマッピング エントリを追加します。
Original Value: New Value: /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 書き換えモジュールに含まれる "Rule with Rewrite Map" テンプレートを使用して、書き換えマップを使用する書き換えルールの生成方法を学びました。このルール テンプレートを使用して、ルールおよびプレースホルダー マップを作成できます。このマップには、Web アプリケーションの静的な書き換えおよびリダイレクトのマッピングを多数含めることができます。