使用輸出規則新增 Web Analytics 追蹤程式代碼
本檔章節適用於 IIS 7 的 URL Rewrite Module 2.0 版。
本逐步解說將引導您建立 IIS 輸出重寫規則,以將 Web 分析追蹤文本插入網頁。
必要條件
若要執行此逐步解說,您必須具備下列專案:
- 已安裝 URL Rewrite Module 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>
警告:在此特定範例中,會假設 JavaScript 程式代碼來自受信任的來源,而且應該如往下插入 HTML 頁面。 在許多其他情況下,當響應標頭或響應內容由輸出重寫規則修改時,應該特別小心,以確保插入回應中的文字不包含任何用戶端可執行程序代碼,這可能會導致跨網站腳本弱點。 當重寫規則使用不受信任的數據,例如 HTTP 標頭或查詢字串,來建置要插入 HTTP 回應的字串時,這特別重要。 在這種情況下,取代字串應該使用 HtmlEncode 函式進行 HTML 編碼,例如:
<action type="Rewrite" value="{HtmlEncode:{HTTP_REFERER}}" />
若要建立輸出規則:
- 開啟 IIS 管理員
- 選取 [預設網站]
- 在 [功能檢視] 中,選取 [URL 重寫模組]
- 在右側的 [動作] 窗格中,按兩下 [新增規則...]。 在 [新增規則] 對話框中,選取 [輸出規則] 類別下的 [空白規則],然後按兩下 [確定]。
現在您必須定義實際的輸出規則。 在 URL Rewrite Module 2.0 中,輸出重寫規則是藉由指定下列資訊來定義:
- 規則的名稱。
- 選擇性前置條件,可控制此規則是否應套用至回應。
- 要用於比對回應中字串的模式。
- 選擇性的一組條件。
- 如果符合模式,且所有條件檢查都成功,則為要執行的動作。
為規則命名
在 [名稱] 文本框中,輸入將唯一識別規則的名稱,例如:“新增追蹤腳本”。
定義前置條件
前置條件可用來評估輸出規則評估是否應在回應上執行。 例如,如果修改 HTML 內容的規則,則應該針對此規則評估只有內容類型標頭設定為 「text/html」 的 HTTP 回應。 輸出規則評估和內容重寫是CPU密集作業,可能會對 Web 應用程式的效能造成負面影響。 因此,使用前置條件來縮小套用輸出規則時的案例範圍。
因為您要建立的規則應該只在 HTML 回應上套用,因此您將定義前置條件,以檢查 HTTP 回應標頭 內容類型 是否等於 「text/html」。。
若要定義前置條件:
在 [預先條件] 清單中,選取 [<建立新的預先條件...>]。
這會帶您前往 [條件前編輯器] 對話框,您必須在其中定義前置條件。 指定前置條件設定,如下所示:
名稱:“IsHTML”
使用:“正則表達式”
按兩下 [新增] 以顯示 [新增條件] 對話框。 在這裡對話框中,指定:
條件輸入:“{RESPONSE_CONTENT_TYPE}”
檢查輸入字串:「符合模式」
模式:“^text/html”
單擊 [確定] 以儲存前置條件,並返回 [編輯規則] 頁面。
定義相符的範圍
輸出重寫規則可以在 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="</body>" />
<action type="Rewrite" value="<script type='text/javascript'>//Your web analytics tracking code goes here...</script></body>" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
測試規則
若要測試規則是否正確將 JavaScript 程式代碼新增至網頁,請要求此 URL http://localhost/iisstart.htm
。
一旦您從伺服器取得回應,請開啟實際的 HTML 原始程式碼(如果使用 Internet Explorer 8,請移至 [頁面-> 檢視來源]。 回應 HTML 會在結尾 HTML 本文標記之前包含 JavaScript 程式代碼:
摘要
在本逐步解說中,您已瞭解如何在 URL 重寫模組第 2 版中使用輸出規則,以即時修改 HTTP 回應的內容。 當您需要對 Web 應用程式所產生的 HTTP 回應執行次要修改,但您沒有應用程式的控制權,或對應用程式進行大規模變更並不實用時,這項功能非常有用。