URL 書き換えモジュールをインストールする

投稿者: Ruslan Yakushev

URL リライト モジュールをインストールする

IIS 7 以降の Microsoft URL 書き換えモジュール 2.0 を使用すると、IIS 管理者は、ユーザーが覚えやすく、検索エンジンが簡単に検索できるわかりやすい URL に要求 URL をマップする、強力なカスタマイズされたルールを作成できます。 URL 書き換えモジュールを使用して URL 操作タスクを実行できます。その一部は次のとおりです:

  • 複雑な URL をシンプルで一貫性のある Web アドレスに変換するための強力なルールを定義します。
  • Web アプリケーションの URL を簡単に置き換えて、ユーザーと検索エンジンのわかりやすい結果を生成します。
  • HTTP ヘッダーと IIS サーバー変数に基づいて URL を書き換えます。
  • 書き換えルールで表されたロジックに基づいて、リダイレクトの実行、カスタム応答の送信、または HTTP 要求の停止を行います。
  • URL セグメントまたは要求メタデータに基づいて Web サイト コンテンツへのアクセスを制御します。

URL 書き換えモジュールは、独自の IIS サーバーと Microsoft の Azure Web サイト クラウド プラットフォームの両方にインストールできるダウンロードとして使用できます。

URL 書き換え 2.0 の機能

Microsoft URL 書き換えモジュール 2.0 には、次の主な機能が含まれています:

  • ルールベースの URL 書き換えエンジン。 書き換えルールでは、要求 URL が定義されたルールと一致したときに要求 URL を分析し、それらをマップして URL を再読み取りするために使用されるロジックを定義します。 Web サーバーとサイト管理者は、書き換え規則セットを使用して URL 書き換えロジックを定義できます。
  • 正規表現パターンの照合。 書き換えルールでは、ECMA-262 で定義されているパターン マッチングに正規表現構文を使用できます。
  • ワイルドカード パターン マッチング。 書き換えルールでは、パターン マッチングにワイルドカード構文を使用できます。
  • グローバルおよび分散書き換えルール。 URL 書き換えでは、グローバル ルールを使用してサーバー全体の URL 書き換えロジックを定義します。 これらの規則は applicationHost.config ファイル内で定義され、構成階層内の下位レベルで構成された規則を優先します。 また、モジュールでは分散ルールを使用して、特定の構成スコープに固有の URL 書き換えロジックを定義します。 この種類の規則は、Web.config ファイルを使用して、任意の構成レベルで定義できます。
  • サーバー変数と HTTP ヘッダーへのアクセス。 サーバー変数と HTTP ヘッダーは、現在の HTTP 要求に関する追加情報を提供します。 この情報は、書き換えルールを構成したり、出力 URL を作成したりするために使用できます。
  • さまざまなルール アクション。 ルールでは、URL を書き換える代わりに、HTTP リダイレクトの発行、要求の中止、HTTP クライアントへのカスタム状態コードの送信などの他のアクションを実行できます。
  • IIS カーネル モードとユーザー モード出力キャッシュのサポート。 IIS 出力キャッシュにより、Web アプリケーションのパフォーマンスが大幅に向上します。 URL 書き換えモジュールは、両方の種類の出力キャッシュと完全に互換性があります。 つまり、書き換えられた URL の応答を安全にキャッシュできるため、URL の書き換えに依存する Web アプリケーションのパフォーマンスが向上します。
  • データ操作関数。 組み込みの文字列操作関数を使用すると、URL を小文字に変換したり、URL エンコードとデコードを実行したりできます。
  • 書き換えマップ。 書き換えマップは、名前と値のペアの任意のコレクションです。 書き換えルール内で書き換えマップを使用して、置換 URL を生成できます。 書き換えマップは、多数の書き換えルールがあり、そのすべてが静的文字列を使用する場合に特に便利です (つまり、パターン マッチングは使用されません)。 このような場合は、単純な書き換えルールの大規模なセットを定義する代わりに、入力 URL をキーとして使用し、置換 URL を値として使用して、書き換えマップ間のすべてのマッピングを配置できます。 その後、書き換えマップを参照する 1 つの書き換えルールを作成し、入力 URL に基づいて置換 URL を検索できます。
  • 失敗した要求トレースの規則。 IIS 失敗要求トレースは、URL の書き換えに関連するエラーのトラブルシューティングに使用できます。
  • 規則のテンプレート。 ルール テンプレートは、特定のタスクの書き換えルールの作成を簡略化する URL 書き換えモジュールのユーザー インターフェイスの拡張機能です。 このモジュールには 3 つのルール テンプレートが含まれており、任意の数のカスタム テンプレートの接続もサポートしています。
  • 正規表現とワイルドカード パターンをテストするためのユーザー インターフェイス (UI)。 モジュールには、ルール パターンをテストするための UI が用意されています。 UI を使用すると、書き換えルールの正規表現またはワイルドカード パターンの結果をすばやく確認できます。 UI を使用して、パターン マッチングに関連する問題のトラブルシューティングとデバッグを行うこともできます。
  • 書き換えルールと書き換えマップを管理するための UI。 書き換えルールと書き換えマップは、IIS マネージャーの URL 書き換えモジュールを使用して追加、削除、編集できます。
  • mod_rewrite ルールをインポートするための UI。 URL 書き換えモジュールには、書き換えルールを mod_rewrite 形式から IIS 形式に変換するための UI が含まれています。

URL 書き換えモジュールを取得する場所

詳細およびモジュールをダウンロードするには、URL 書き換え拡張機能のホーム ページを参照してください。

Go Live リリースからのアップグレード

URL 書き換えモジュールの Go Live リリースが既にインストールされている場合、インストール パッケージにより URL 書き換えバージョン 2.0 にアップグレードされます。 ApplicationHost.config ファイルと Web.config ファイル内のすべての書き換え規則は保持されます。

ASP.NET の更新プログラム

URL 書き換えモジュール インストーラー パッケージには、URL 書き換えモジュール固有の ASP.NET バグを修正する ASP.NET の更新プログラムが含まれています。 具体的には、更新プログラムには次のバグの修正プログラムが含まれています:

  1. ASP.NET Web サーバー コントロールの ~ 演算子が、URL 書き換えを使用しているときに正しく解決されません。
  2. ASP.NET サイトマップに仮想 URL が含まれている場合、SiteMap.CurrentNode プロパティは null 値を返します。

更新プログラムは、URL 書き換えモジュールがインストールされているコンピューターに .NET Framework バージョン 3.5 SP1 以降がインストールされている場合にのみ適用されます。 URL 書き換えモジュールをインストールした後に必要なバージョンの .NET Framework をインストールする場合は、URL 書き換えモジュール インストーラーを実行し、インストーラー ダイアログで [修復] オプションを選択して、ASP.NET 更新プログラムを適用できます。

URL の書き換えに関連するこれらの問題とその他の ASP.NET の問題の詳細については、「ASP.NET Web Forms の URL 書き換え」を参照してください。

モジュールの使用

これらの記事では、URL 書き換えモジュールの機能について説明し、それを使用して一般的な URL 書き換えシナリオを実装する方法について説明します。

基本を学ぶ

参考資料とガイダンス

ビデオ チュートリアル

Go Live リリース以降の変更

Go Live リリース以降、URL 書き換えモジュールに次の追加、変更、および重要なバグ修正が行われました:

  1. 文字列操作関数 UrlEncodeUrlDecode を追加しました。
  2. サーバー変数 UNENCODED_URL を介して生の元の URL へのアクセスを提供しました。 このサーバー変数には、Web ブラウザーから要求されたとおりに生でエンコードされた URL が含まれるようになりました。
  3. アプリケーション要求ルーティング (ARR) の書き換え規則を構成するための UI を追加しました。
  4. URL 書き換えモジュールの Go Live リリースからのインプレース アップグレードのサポートを追加しました。
  5. 書き換え規則をキャッシュするときにメモリが過剰に使用されないように、内部キャッシュをクリーンアップする機能を追加しました。
  6. ASCII 以外の文字を含む URL の書き換えに関連するバグを修正しました。
  7. 大文字と小文字を区別しないパターンの文字範囲が正しく評価されない正規表現の処理のバグを修正しました。
  8. IIS FastCGI モジュールの更新プログラムをインストーラー パッケージに含めました。
  9. System.Web.dll の更新プログラムをインストーラー パッケージに含めました。
  10. IIS SetUri 関数の更新プログラムをインストーラー パッケージに含めました。

既知の問題

  1. REQUEST_URI サーバー変数を使用する mod_rewrite ルールは、インポート ルール機能の URL 書き換えを使ってインポートされたときに正しく機能しない可能性があります。 インポートされたルールの使用を修正するには、任意のテキスト エディターを使用して、それらのルールを含む Web.config ファイルを開くことができます。 <rewrite> セクションを見つけ、そのセクション内で文字列 "{SCRIPT_NAME}" のすべてのインスタンスを文字列 "{URL}" に置き換えます。
  2. ダイジェスト認証は、URL 書き換えモジュールでは使用できません。
  3. ASP.NET フォーム認証は、リダイレクト用の書き換え URL を使用します。 たとえば、要求された URL が "/article.htm" で、URL 書き換えモジュールが URL を Forms 認証で保護された "/article.aspx" に書き換えた場合、ASP.NET は "/login.aspx?ReturnUrl=%2Farticle.aspx" にリダイレクトします。
  4. ASP.NET フォーム認証の自動検出モードでは、リダイレクト用に書き換えられた URL が使用されます。 たとえば、要求された URL が "/article.htm" で、URL 書き換えモジュールが URL を Forms 認証で保護された "/article.aspx" に書き換えた場合、ASP.NET は "/article.aspx?AspxAutoDetectCookieSupport=1" にリダイレクトします。
  5. ASP.NET フォーム認証の UseUri モードでは、リダイレクトに書き換えられた URL が使用されます。 たとえば、要求された URL が "/article.htm" で、URL 書き換えモジュールが URL を Forms 認証で保護された "/article.aspx" に書き換えた場合、ASP.NET は "/(S(vy2ebt45imfkmjjwboow3l55))/article.aspx" にリダイレクトします。
  6. ASP.NET は、URI ベースの認証または Cookie なしのセッション状態を使用すると、元の URL に書き換えます。 たとえば、要求が "/(S(vy2ebt45imfkmjjwboow3l55)) /article.htm" に対して行われ、URL 書き換えモジュールが "/article.htm" を "/article.aspx" に書き換えると、ASP.NET は URL を "/article.htm" に書き換え、"404 - ファイルが見つかりません" というエラーが発生する可能性があります。
  7. IIS DefaultDocument モジュールは、URL 書き換えモジュールがフォルダーに書き換えると、書き換えられた URL にリダイレクトする場合があります。 たとえば、書き換えルールの置換 URL が "/folder1/folder2" で、これらのフォルダーがファイル システムに存在し、既定のドキュメントが構成されている場合、DefaultDocument モジュールは Web クライアントを "/folder1/folder2/" にリダイレクトし、書き換えられた URL を公開します。 この問題が発生しないようにするには、フォルダーに書き換えるときに置換 URL の末尾に "/" を使用します (例: "/folder1/folder2/")