ユーザー フレンドリ URL - ルール テンプレート
作成者: IIS チーム
ルール テンプレートは、特定のシナリオに対して 1 つ以上の書き換えルールを作成する簡単な方法を提供するために使用されます。 URL 書き換えモジュールには、一般的な使用シナリオ用のルール テンプレートがいくつか含まれています。 その URL 書き換えモジュール UI に加えて、カスタム ルール テンプレートを接続するためのフレームワークも用意されています。 このチュートリアルでは、URL 書き換えモジュールに含まれている "ユーザー フレンドリ URL" ルール テンプレートを使用する方法について説明します。
前提条件
このチュートリアルでは、次の前提条件が必要です:
- IIS 7.0 以降で ASP.NET 役割サービスが有効になっている。
- URL 書き換えモジュール 2.0 リリースがインストールされている。
テスト 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>
<tr>
<td>Public Link: </td>
<td><a href="<%= Request.ServerVariables["SCRIPT_NAME"] %>?<%= Request.ServerVariables["QUERY_STRING"] %>">Link URL</a></td>
</tr>
</table>
</body>
</html>
このファイルをコピーしたら、http://localhost/article.aspx
にアクセスし、ページがブラウザーで正しくレンダリングされたことを確認します。
ルール テンプレートを使用して書き換えルールを生成する
"ユーザー フレンドリ URL" ルール テンプレートを使用すると、動的 Web アプリケーションの URL をよりユーザーと検索エンジンにわかりやすいものにする書き換えルール、リダイレクト ルール、アウトバウンド ルールを生成できます。 通常、動的 Web ページでは出力 HTML の生成時にクエリ文字列パラメータが使用されます。 クエリ文字列が含まれる URL (例: http://contoso.com/articles.aspx?year=2008&month=11
) は、単純な階層ベース URL (例: http://contolso.com/articles/2008/11
) を使用して通信する場合と比べて、人間にとってわかりやすくありません。 さらに、一部の検索エンジン クローラーは、Web サイト ページのインデックスを作成する際に、クエリ文字列を無視することがあります。 ルール テンプレートを使用すると、階層ベース URL をクエリ文字列を使用した URL に変換する書き換えルールを生成できます。 またテンプレートを使用して、必要に応じて、クエリ文字列を使用した Web クライアント フォームの URL をリダイレクトして URL をクリーンするために使用できるリダイレクト ルールを生成することもできます。 さらに、HTML 応答内のクエリ文字列を使用した URL の出現箇所すべてを相当する階層ベース URL に置き換えるアウトバウンド書き換えルールを作成できます。
テンプレートを使用するには、次の手順に従います。
- IIS マネージャーに移動します。
- [既定の Web サイト] を選択します。
- 機能ビューで、[URL 書き換え] をクリックします。
- 右側の [操作] ウィンドウで、[ルールの追加...] をクリックし、"ユーザー フレンドリ URL" テンプレートを選択します。
- [ユーザー フレンドリ URL を使用できるようにするルールを追加する] ダイアログで、クエリ文字列パラメータを使用した URL の例
http://localhost/article.aspx?id=123&title=some-title
を入力してから、その例の URL をクエリ文字列を使用しない URL に変換できる方法に関する推奨オプションがあるドロップダウン リストを展開します。
- 2 番目のオプションの
http://localhost/article/123/some-title
を選択します。 それに応じて URL パターンと置換用 URL が更新されていることに注意してください。 これらは、ルール テンプレートにより作成される書き換えルールで使用されます。 Web クライアントで内部 URL を使用して Web ページを要求する際に使用されるリダイレクトルールを作成するには、[対応するリダイレクトルールを作成する] チェック ボックスをオンにします。 これらのクライアントは、対応するパブリック URL にリダイレクトされます。
また、[対応するアウトバウンド書き換えルールを作成する] チェック ボックスをオンにして、応答 HTML 内の内部 URL のすべてのインスタンスを相当するパブリック URL に置き換えるアウトバウンド ルールを作成します。
- [OK] をクリックすると、書き換えルール、リダイレクト ルール、アウトバウンド ルールが生成されます。
ルールのテスト
生成されたルールをテストするには、Web ブラウザーを開き、次の URL を要求します。
http://localhost/article/234/some-title
Web サーバー上の書き換えルールによって元の URL が article.aspx に変更され、クエリ文字列パラメータの値として "234" と "some-title" が渡されていることがわかります。
Web ブラウザーで、[リンクの URL] のテキストの上にマウスを移動します (または、メニューの [ページ] -> [ソースの表示...] を使用します)。 リンクの URL は、元来はクエリ文字列パラメータを使用する形式であっても、階層ベース URL 形式を使用するように URL 書き換えモジュールにより置き換えられていることに注意してください。
また、http://localhost/article.aspx?id=432&title=some-other-title
を要求した場合は、ブラウザーが http://localhost/article/432/some-other-title
にリダイレクトされます。
まとめ
このチュートリアルでは、URL 書き換えモジュールに含まれている "ユーザー フレンドリ URL" ルール テンプレートを使用して書き換えルールを生成する方法について説明しました。 このルール テンプレートは、既存の Web アプリケーションでユーザーと検索エンジンにわかりやすい URL を使用できるようにするための書き換えルールを設計する際の始点として使用できます。