Share via


使用輸出規則新增 Web Analytics 追蹤程式碼

作者: Ruslan Yakushev

本檔章節適用于 適用于 IIS 7 的 URL 重寫模組 2.0版。

本逐步解說將引導您建立 IIS 輸出重寫規則,以將 Web 分析追蹤腳本插入網頁。

必要條件

若要執行此逐步解說,您必須具備下列專案:

  1. 已安裝 URL 重寫模組 2.0 RCrelease。

簡介

Web 分析服務的目的是要為網站發行者提供其網站的訪客相關資訊。 這項資訊可協助網站發行者優化內容、廣告和服務供應專案,以提高客戶滿意度和 ROI。 一般而言,線上 Web 分析服務,例如 Google Analytics 或 Omniture 工作,方法是收集網站訪客的相關資料。 當網站擁有者要求報告時,Web 分析提供者會處理此資料,並以方便且容易理解的格式向網站擁有者呈現資料。 若要啟用分析所需的資料收集,網站擁有者必須使用 Web 分析服務提供者發出的追蹤腳本來檢測網站上的所有頁面

在某些情況下,將追蹤程式碼新增至網頁是簡單的工作。 不過,在許多情況下,可能需要手動將腳本新增至許多網頁。 在這些情況下,Web 分析檢測會變成昂貴且耗時的工作。 URL 重寫模組第 2 版中的回應重寫功能可藉由執行即時變更回應內容的輸出規則來協助這些情況。

建立輸出重寫規則

首先,您將建立輸出重寫規則,將 JavaScript 程式碼片段新增至 HTML 回應。 程式碼片段會緊接在結尾 < /body > 標籤之前插入,如下圖所示

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

顯示 HtmlEncode 函式的 H T M L Web 分析追蹤程式碼和 X M L 程式碼範例。警告: 在此特定範例中,假設 JavaScript 程式碼來自信任的來源,而且應該依原樣插入 HTML 頁面中。 在許多其他情況下,當回應標頭或回應內容由輸出重寫規則修改時,應該特別小心,以確保插入回應中的文字不包含任何用戶端可執行程式碼,這可能會導致跨網站腳本弱點。 當重寫規則使用 HTTP 標頭或查詢字串等不受信任的資料來建置將插入 HTTP 回應的字串時,這特別重要。 在這種情況下,取代字串應該使用 HtmlEncode 函式進行 HTML 編碼,例如:

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

若要建立輸出規則:

  1. 開啟 IIS 管理員
  2. 選取 [預設網站]
  3. 在 [功能檢視] 中,選取 [URL 重寫模組]
    已選取 [U R L 重寫] 的 I S Manager 視窗功能檢視螢幕擷取畫面。
  4. 在右側的 [動作] 窗格中,按一下 [新增規則...]。 在 [新增規則] 對話方塊中,選取 [輸出規則] 類別下的 [空白規則],然後按一下 [確定]。
    [新增規則] 對話方塊的螢幕擷取畫面,其中已選取 [輸出規則] 底下的 [空白規則]。

現在,您必須定義實際的輸出規則。 在 URL Rewrite Module 2.0 中,會藉由指定下列資訊來定義輸出重寫規則:

  • 規則的名稱。
  • 選擇性前置條件,可控制此規則是否應套用至回應。
  • 用於比對回應中字串的模式。
  • 一組選擇性的條件。
  • 比對模式且所有條件檢查都成功時要執行的動作。

為規則命名

在 [名稱] 文字方塊中,輸入可唯一識別規則的名稱,例如:「新增追蹤腳本」。

定義前置條件

前置條件是用來評估是否應該在回應上執行輸出規則評估。 例如,如果修改 HTML 內容的規則,只有內容類型標頭設定為 「text/html」 的 HTTP 回應應該針對此規則進行評估。 輸出規則評估和內容重寫是 CPU 密集作業,可能會對 Web 應用程式的效能造成負面影響。 因此,使用前置條件來縮小套用輸出規則時的案例範圍。

因為您所建立的規則應該只套用在 HTML 回應上,所以您將定義一個前置條件,以檢查 HTTP 回應標頭 內容類型 是否等於 「text/html」。

若要定義前置條件:

  1. 在 [前置條件] 清單中,選取 [ < 建立新的預先條件... > ]。

  2. 這會帶您前往 [條件前編輯器] 對話方塊,您必須在其中定義前置條件。 指定前置條件設定,如下所示:

    • 名稱:「IsHTML

    • 使用:「正則運算式

    • 按一下 [新增] 以顯示 [新增條件] 對話方塊。 在此對話方塊中,指定:

      • 條件輸入:「{RESPONSE_CONTENT_TYPE}

      • 檢查輸入字串:「符合模式

      • 模式:「^text/html

        [新增預先條件編輯器] 對話方塊的螢幕擷取畫面,其中包含設定。

  3. 按一下 [確定] 以儲存前置條件,並返回 [編輯規則] 頁面。

定義相符的範圍

輸出重寫規則可以在 HTTP 標頭的內容或回應本文內容上運作。 此規則需要修改回應內容,因此在 [比對範圍] 下拉式清單中選擇 [回應]。

定義模式

在 [Using:] 下拉式清單中,選擇 [完全相符]選項。

在 [模式] 文字方塊中,輸入下列字串:

</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>

測試規則

若要測試規則是否正確將 JavaScript 程式碼新增至網頁,請要求此 URL http://localhost/iisstart.htm

從伺服器取得回應之後,如果使用 Internet Explorer 8,請開啟實際的 HTML 原始程式碼 (,然後移至 [頁面] -- > 檢視來源) 。 回應 HTML 會在結尾 HTML 本文標籤之前包含 JavaScript 程式碼:

顯示 JavaScript 程式碼的 [記事本] 視窗螢幕擷取畫面。

總結

在本逐步解說中,您已瞭解如何在 URL 重寫模組第 2 版中使用輸出規則,以即時修改 HTTP 回應的內容。 當您需要對 Web 應用程式所產生的 HTTP 回應執行次要修改,但您沒有應用程式控制權,或對應用程式進行大規模變更並不實用時,這項功能非常有用。