アウトバウンド規則を使用して Web Analytics 追跡コードを追加する

著者 Ruslan Yakushev

ドキュメントのこのセクションは、URL Rewrite Module Version 2.0 for IIS 7 に適用されます。

このチュートリアルでは、Web 分析追跡スクリプトを Web ページに挿入する IIS 送信書き換えルールを作成する方法について説明します。

前提条件

このチュートリアルを完了するには、次のことが必要です:

  1. URL 書き換えモジュール 2.0 RCrelease がインストールされています。

はじめに

Web 分析サービスの目的は、Web サイトの発行元に、サイトへの訪問者に関する統計情報を提供することです。 この情報は、サイトの発行元が顧客満足度と ROI を向上させるためにコンテンツ、広告、サービスオファリングを最適化するのに役立ちます。 通常、Google Analytics や Omniture などのオンライン Web 分析サービスは、Web サイトの訪問者に関するデータを収集することによって機能します。 サイト所有者がレポートを要求すると、Web 分析プロバイダーはこのデータを処理し、便利でわかりやすい形式でサイト所有者に表示します。 分析に必要なデータ収集を有効にするには、Web サイトの所有者は、Web 分析サービス プロバイダーによって発行された追跡スクリプトを、Web サイト上のすべてのページにインストルメント化する必要があります

場合によっては、Web ページに追跡コードを追加するのは簡単な作業です。 ただし、多くの場合、スクリプトを多数の Web ページに手動で追加する必要があります。 このような場合、Web 分析のインストルメンテーションは、コストと時間のかかるタスクになります。 URL 書き換えモジュール バージョン 2 の応答書き換え機能は、応答コンテンツをその場で変更するアウトバウンド規則を実行することで、このような状況で役立ちます。

送信書き換え規則を作成する

まず、HTML 応答に JavaScript コード スニペットを追加する送信書き換え規則を作成します。 次の図に示すように、終了 </body> タグの直前にコード スニペットが挿入されます

... 
    <script type='text/javascript'>
        //Your web analytics tracking code goes here...
    </script>
</body>

HtmlEncode 関数を示す H T M L Web 分析追跡コードと X M L コードの例。WARNING:この特定の例では、JavaScript コードは信頼できるソースからのものであり、そのまま HTML ページに挿入する必要があります。 他の多くの場合、応答ヘッダーまたは応答コンテンツが送信書き換えルールによって変更される場合は、応答に挿入されるテキストにクライアント側の実行可能コードが含まれないように注意する必要があります。これにより、クロスサイト スクリプティングの脆弱性が発生する可能性があるためです。 これは、書き換えルールで HTTP ヘッダーやクエリ文字列などの信頼されていないデータを使用して、HTTP 応答に挿入される文字列を構築する場合に特に重要です。 このような場合、置換文字列は HtmlEncode 関数を使用して HTML エンコードする必要があります。次に例を示します:

<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />

アウトバウンド規則を作成するには:

  1. IIS マネージャーを開きます。
  2. "既定の Web サイト" を選択します
  3. 機能ビューで、"URL 書き換えモジュール" を選択します
    [I I S Manager] ウィンドウの機能ビューのスクリーンショット。[U R L 書き換え] が選択されています。
  4. 右側の [操作] ウィンドウで、[ルールの追加...] をクリックします。 [ルールの追加] ダイアログで、[送信ルール] カテゴリの下にある [空のルール] を選択し、[OK] をクリックします。
    [送信規則] の下で [空の規則] が選択されている [規則の追加] ダイアログ ボックスのスクリーンショット。

ここで、実際のアウトバウンドルールを定義する必要があります。 URL Rewrite Module 2.0 では、以下の情報を指定してアウトバウンド書き換えルールを定義します。

  • ルールの名前。
  • このルールを応答に適用するかどうかを制御する省略可能な前提条件。
  • 応答内の文字列の照合に使用するパターン。
  • 省略可能な一連の条件。
  • パターンが一致し、すべての条件チェックが成功した場合に実行するアクション。

規則の名前付け

[名前] テキスト ボックスに、ルールを一意に識別する名前を入力します (例: "追跡スクリプトの追加")。

前提条件の定義

前提条件は、応答に対してアウトバウンド規則の評価を実行する必要があるかどうかを評価するために使用されます。 たとえば、HTML コンテンツを変更するルールの場合、コンテンツ タイプ ヘッダーが "text/html" に設定された HTTP 応答のみを、このルールに対して評価する必要があります。 アウトバウンド規則の評価とコンテンツの書き換えは、WEB アプリケーションのパフォーマンスに悪影響を与える可能性のある CPU 負荷の高い操作です。 そのため、前提条件を使用して、アウトバウンド規則が適用されるケースを絞り込みます。

作成する規則は HTML 応答にのみ適用する必要があるため、HTTP 応答ヘッダー コンテンツ タイプが "text/html" と等しいかどうかをチェックする前提条件を定義します。

前提条件を定義するには:

  1. 事前条件の一覧で、"<新しい事前条件の作成...>" を選択します。

  2. これにより、[事前条件エディター] ダイアログが表示され、前提条件を定義する必要があります。 前提条件の設定を以下のように指定します:

    • 名前: "IsHTML"

    • 使用: "正規表現"

    • [追加] をクリックして、[条件の追加] ダイアログを表示します。 このダイアログで、以下の項目を指定します:

      • 条件入力: "{RESPONSE_CONTENT_TYPE}"

      • 入力文字列が "パターンと一致する" かどうかを確認する

      • パターン: "^text/html"

        設定を含む [条件エディターの追加] ダイアログのスクリーンショット。

  3. [OK] をクリックして前提条件を保存し、[ルールの編集] ページに戻ります。

照合するスコープの定義

送信書き換え規則は、HTTP ヘッダーのコンテンツまたは応答本文のコンテンツで動作できます。 このルールでは応答の内容を変更する必要があるため、"照合スコープ" のドロップダウン リストで "応答" を選択します。

パターンの定義

[Using:] ドロップダウン リストで、"Exact match" オプションを選択します。

[パターン] テキスト ボックスに、次の文字列を入力します:

</body>

アクションの定義

"アクション" グループ ボックスに一覧表示されている "書き換え" アクションの種類を選択します。 ”値" テキスト ボックスに、次の文字列を入力します:

<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>

この文字列は、応答内で一致する文字列の置換として使用される新しい値を指定します。 この場合、文字列 "</body>" は JavaScript コード スニペットに置き換えられ、その後に終了 HTML 本文タグが続きます。

その他の設定はすべて既定値のままにします。 "ルールの編集" プロパティ ページは、次のページのようになります:

[送信ルールの編集] プロパティ ページのスクリーンショット。設定が選択されています。

右側にある "適用" アクションをクリックして、ルールを保存します。

構成ファイルでの書き換え規則の表示

書き換えルールは、aplicationHost.config ファイルまたは web.config ファイルに格納されます。 作成したルールの構成を確認するには、%SystemDrive%\inetput\wwwroot\ にある web.config ファイルを開きます。 このファイルには、すべてのルール定義を含む <rewrite> セクションが表示されます:

<rewrite>
 <outboundRules>
  <rule name="Add tracking script" patternSyntax="ExactMatch" preCondition="">
   <match filterByTags="None" pattern="&lt;/body>" />
   <action type="Rewrite" value="&lt;script type='text/javascript'>//Your web analytics tracking code goes here...&lt;/script>&lt;/body>" />
  </rule>
 <preConditions>
  <preCondition name="IsHTML">
    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
  </preCondition>
 </preConditions>
</outboundRules>
</rewrite>

ルールのテスト

ルールが Web ページに JavaScript コードを正しく追加することをテストするには、この URL http://localhost/iisstart.htm を要求します。

サーバーから応答を受け取ったら、実際の HTML ソース コードを開きます (Internet Explorer 8 を使用している場合は、[ページ --> ソースの表示] に移動します)。 応答 HTML には、終了 HTML 本文タグの前に JavaScript コードが含まれます:

I I S 7 ウィンドウのスクリーンショット。メモ帳に JavaScript コードが表示されています。

まとめ

このチュートリアルでは、URL 書き換えモジュール バージョン 2 のアウトバウンド規則を使用して、HTTP 応答の内容をその場で変更する方法について説明しました。 この機能は、Web アプリケーションによって生成された HTTP 応答に対して軽微な変更を実行する必要があるが、アプリケーションを制御できない場合や、アプリケーションに大規模な変更を加えるのが実用的でない場合に非常に便利です。