URL 書き換えモジュールの使用

作成者 : Ruslan Yakushev

発行日 : 2008 年 5 月 19 日 (作業者 : ruslany(英語))

更新日 : 2008 年 11 月 17 日 (作業者 : ruslany(英語))

はじめに

Microsoft URL Rewrite Module for IIS 7.0 は、幅広い URL 操作タスクの実行に使用できる、ルールに基づいた柔軟な書き換えエンジンを搭載しています。以下は URL 操作タスクの一例です。

  • 動的 Web アプリケーションにより、ユーザーおよび検索エンジンが扱いやすい URL を実現
  • HTTP ヘッダーとサーバー変数に基づいた URL の書き換え
  • Web サイト コンテンツの処理
  • URL セグメントまたは要求メタデータに基づいた Web サイト コンテンツへのアクセスの制御

機能

Microsoft URL Rewrite Module の主な機能は以下のとおりです。

  • ルールに基づいた URL 書き換えエンジン。書き換えルールを使用して、要求 URL を何と比較したり一致させたりするのか、および比較が成功した場合にどうするのかに関するロジックを表します。Web サーバーおよびサイトの管理者は、書き換えルール セットを使用して、URL 書き換えロジックを定義できます。

  • **正規表現パターン一致。**書き換えルールでは、パターン一致に ECMA-262 (英語) 準拠の正規表現構文を使用できます。

  • **ワイルドカード パターン一致。**書き換えルールでは、パターン一致にワイルドカード構文を使用できます。

  • **書き換えのグローバル ルールおよび分散ルール。**グローバル ルールを使用して、サーバー全体に及ぶ URL 書き換えロジックを定義します。これらのルールは applicationHost.config ファイル内で定義され、下位の構成レベルでは上書きや無効化ができません。分散ルールは、特定の構成範囲に固有の URL 書き換えロジックを定義するために使用します。この種類のルールは、web.config ファイルを使用することにより、どの構成レベルでも定義できます。

  • **サーバー変数および HTTP ヘッダーへのアクセス。**サーバー変数および HTTP ヘッダーは、現在の HTTP 要求についての追加情報を提供します。この情報を使用して、書き換えの決定を行ったり、出力 URL を構成したりすることができます。

  • **ルールのさまざまなアクション。**URL を書き換える代わりに、ルールでその他のアクションを実行することがあります。たとえば、HTTP リダイレクトを発行したり、要求を中止したり、カスタム状態コードを HTTP クライアントに送信したりします。

  • **IIS カーネル モードおよびユーザー モードの出力キャッシュのサポート。**IIS 7.0 出力キャッシュは、Web アプリケーションのパフォーマンスを大幅に向上させます。URL 書き換えモジュールは、両方の種類の出力キャッシュと完全に互換性があります。つまり、書き換えられた URL の応答を安全にキャッシュできるので、URL の書き変えに依存する Web アプリケーションのパフォーマンスを向上させられます。

  • **文字列操作関数。**組み込みの文字列操作関数を使用すると、URL を小文字に変換したり、URL のエンコードとデコードを実行したりすることができます。

  • **書き換えマップ。**書き換えマップは、書き換えルールに使用して、書き換え中に置換 URL を生成できる、名前と値の組み合わせの任意のコレクションです。書き換えマップは、大量の書き換えルールが存在し、そのすべてで静的文字列を使用する場合 (つまり、パターン一致を使用しない場合)、特に役に立ちます。このような場合、大量の簡単な書き換えルールを定義する代わりに、入力 URL と 置換 URL の間のすべてのマッピングをキーおよび値として書き換えマップに入力し、この書き換えマップを参照する 1 つの書き換えルールを使用して、入力 URL に基づいて置換 URLを検索できます。

  • **失敗した要求トレースのサポート。**IIS7.0 の失敗した要求トレースは、URL の書き換えに関連したエラーのトラブルシューティングに使用できます。

  • **ルール テンプレート。**ルール テンプレートは、URL 書き換えモジュール ユーザー インターフェイスの拡張機能です。この機能は、特定のタスクに対する書き換えルールの作成を簡略化します。モジュールには、3 つのルール テンプレートが組み込まれています。さらに、カスタム テンプレートをいくつでもプラグインできます。

  • **正規表現とワイルドカード パターンをテストするための UI。**ルール パターンをテストするための GUI ツールは、モジュールのユーザー インターフェイスに含まれています。このツールを使用すると、正規表現パターンまたはワイルドカード パターンがどのように機能するのかをすばやく確認できます。また、パターン一致に関連する問題のトラブルシューティングとデバッグにも使用できます。

  • **書き換えルールと書き換えマップを管理するための UI。**IIS マネージャーの "URL 書き換えモジュール" 機能を使用すると、書き換えルールと書き換えマップを追加、削除、および編集できます。

  • **mod_rewrite ルールのインポート用の GUI ツール。**URL 書き換えモジュールには、書き換えルールを mod_rewrite 形式から IIS 形式に変換するための GUI ツールが含まれています。

モジュールの取得場所

IIS 7.0 x86 バージョンのダウンロード

IIS 7.0 x64 バージョンのダウンロード(英語)

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

URL 書き換えモジュール Go Live リリースが既にインストールされている場合は、インストール パッケージを使用して RTW リリースにアップグレードします。applicationHost.config および web.config ファイルにあるすべての書き換えルールは保持されます。

ASP.NET 更新プログラム

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

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

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

URL の書き換えに関連した ASP.NET の上記の問題およびその他の問題の詳細については、こちらの記事を参照してください。

モジュールの使用

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

基本事項の説明

参考資料およびガイダンス

ビデオ チュートリアル

Go Live リリースからの変更箇所

Go Live リリース以後に URL 書き換えモジュールに行われた追加、変更、および重要なバグの修正は、次のとおりです。

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

既知の問題

  1. REQUEST_UR サーバー変数を使用する mod_rewrite ルールは、URL の書き換えの [Import Rules] 機能を使用してインポートされた場合、正しく機能しない場合があります。インポートしたルールを修正するには、いずれかのテキスト エディターを使用して、これらのルールで構成される web.config ファイルを開きます。<rewrite> セクションを検索して、そのセクション内で、文字列 "{SCRIPT_NAME}" のすべてのインスタンスを文字列 "{URL}" で置き換えます。
  2. ダイジェスト認証は、URL 書き換えモジュールと共に使用できません。
  3. ASP.NET フォーム認証では、リダイレクトのために書き換えられた URL を使用します。たとえば、要求された URL が /article.htm であり、URL 書き換えモジュールでこの URL をフォーム認証で保護された /article.aspx に書き換えた場合、ASP.NET ではこの URL を /login.aspx?ReturnUrl=%2Farticle.aspx にリダイレクトします。
  4. ASP.NET フォーム認証の自動検出モードでは、リダイレクトのために書き換えられた URL を使用します。たとえば、要求された URL が /article.htm であり、URL 書き換えモジュールでこの URL をフォーム認証で保護された /article.aspx に書き換えた場合、ASP.NET ではこの URL を /article.aspx?AspxAutoDetectCookieSupport=1 にリダイレクトします。
  5. ASP.NET フォーム認証の UseUri モードでは、リダイレクトのために書き換えられた URL を使用します。たとえば、要求された URL が /article.htm であり、URL 書き換えモジュールでこの URL をフォーム認証で保護された /article.aspx に書き換えた場合、ASP.NET ではこの URL を /(S(vy2ebt45imfkmjjwboow3l55 ))/article.aspx にリダイレクトします。
  6. ASP.NET では、URI ベースの認証または Cookie のないセッション状態を使用した場合、URL を書き換えて元の 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/ となります。

このセクションの内容

URL 書き換えモジュール用の書き換えルールの作成

このチュートリアルでは、URL 書き換えモジュールの書き換えルールを作成してテストする方法について説明します。はじめに このチュートリアルには、次の前提条件が必要です。ASP.NET 役割サービスを持つ IIS 7.0 が有効化されている。URL 書き換えモジュールの Go Live リリースが...

作成日 : 2008 年 11 月 10 日 (作業者 : ruslany(英語))

URL 書き換えモジュール構成のリファレンス

この記事では、URL 書き換えモジュールの概要について説明します。さらに、モジュールで使用する構成概念について説明します。目次 機能の概要 書き換えルールの概要 書き換えルールの範囲 ルールの評価 ルールの継承 元の URL...

作成日 : 2009 年 2 月 20 日 (作業者 : ruslany(英語))

WordPress での Pretty 固定リンクの有効化

このチュートリアルでは、IIS 7.0 にインストールされた WordPress ブログ エンジンでブログ投稿の "Pretty 固定リンク" を有効にする方法について説明します。通常、Web サーバーに URL 書き換え機能がないと、WordPress ユーザーは "Almost Pretty" URL を使用する必要があります (たとえば、...

作成日 : 2008 年 12 月 3 日 (作業者 : ruslany(英語))

失敗した要求トレースを使用して書き換えルールを追跡する

IIS 7.0 の失敗した要求のトレース (FRT) 機能は、要求処理エラーをトラブルシューティングするための強力なツールです。FRT を URL 書き換えモジュールと共に使用すると、書き換えルールを要求 URL にどのように適用したのかをトレースできます。このチュートリアルでは、...

作成日 : 2008 年 9 月 11 日 (作業者 : ruslany(英語))

Using Global and Distributed Rewrite Rules

このチュートリアルでは、URL 書き換えモジュールでサポートされるルールのさまざまな種類について説明します。さらに、書き換えのグローバル ルールと分散ルールを構成する方法について説明します。背景 書き換えのグローバル ルールを使用して、サーバー全体に及ぶ書き換えロジックを定義します...

作成日 : 2008 年 11 月 10 日 (作業者 : ruslany(英語))

Using Rewrite Maps in URL Rewrite Module

このチュートリアルでは、URL 書き換えモジュールにおける書き換えマップの概念を紹介し、書き換えマップを使用する書き換えルールを作成する方法について説明します。このチュートリアルでは、2 つの書き換えマップを作成します。1 つの書き換えマップは...

作成日 : 2008 年 11 月 20 日 (作業者 : ruslany(英語))

Apache mod_rewrite ルールのインポート

IIS 7.0 のURL 書き換えモジュールでは、Apache mod_rewrite ルールを IIS URL 書き換えルールに変換するプロセスを大幅に簡略化するルール インポート機能が提供されます。このチュートリアルでは、いくつかの mod_rewrite ルールを IIS...

作成日 : 2008 年 11 月 17 日 (作業者 : ruslany(英語))

IIS URL Rewriting and ASP.NET routing

URL Rewrite Module for IIS 7.0 のリリースを使用すると共に、ASP.NET ルーティングを .NET Framework 3.5 SP1 に取り込むことにより、これら 2 つの機能がどのように関連するのか、また、各機能を使用する時期について、ASP.NET 開発者から多くの質問がありました。このドキュメント...

作成日 : 2008 年 9 月 4 日 (作業者 : ruslany(英語))

書き換えルール パターンをテストする

URL 書き換えモジュール UI には、書き換えルールや条件で使用する正規表現およびワイルドカード パターンのテストに使用できるツールが含まれています。このツールを使用すると、パターンの正確性をすばやく確認できます。パターンが...

作成日 : 2008 年 10 月 10 日 (作業者 : iisteam (英語))

IIS 7.0 での要求のフィルタリングと URL の書き換え

IIS 7.0 には、URLScan ISAPI Filter for IIS 6.0 に基づいた要求フィルター モジュールが含まれています。このモジュールでは、Web サーバーのセキュリティを強化できます。さらに、IIS チームは、URL を書き換える IIS 7.0 用のアドオン モジュールもリリースしました。このモジュールでは、...

作成日 : 2008 年 9 月 4 日 (作業者 : ruslany(英語))

URL 書き換えモジュール - ビデオ チュートリアル(英語)

このビデオでは、Microsoft URL Rewrite Module for IIS 7.0 を使用して一般的な URL 操作タスクを実行する方法を示します。動的 Web ページにより、ユーザーおよび検索エンジンが扱いやすい URL を実現 Web サイトに対して標準のホスト名を強制 書き換え...

作成日 : 2008 年 9 月 19 日 (作業者 : ruslany(英語))

URL Rewriting for ASP.NET Web Forms

IIS 7.0 の URL 書き換えモジュールを ASP.NET アプリケーションと共に使用する場合、書き換えられた URL で Web アプリケーションが正しく動作するのを確認することは重要です。この記事では、ASP.NET Web アプリケーションに影響を与える URL の書き換えのシナリオについて説明し、...

作成日 : 2009 年 2 月 20 日 (作業者 : ruslany(英語))

ルール テンプレート

URL 書き換えモジュールのルール テンプレートでは、特定のシナリオに対して 1 つまたは複数の書き換えルールを作成する簡単な方法を提供します。ルール テンプレートを標準サポート URL 書き換えモジュールには、最も一般的なシナリオ用のいくつかのルール テンプレートが含まれています。User Friendly URL - このルール テンプレート...

作成日 : 2008 年 11 月 10 日 (作業者 : ruslany(英語))