使用 URL 重寫模組 2.0

作者: Ruslan Yakushev

簡介

本檔的這一節適用于 適用于 IIS 7 的 URL Rewrite 2.0

適用于 IIS 7 和更新版本的 URL 重寫 2.0 是累加版本,其中包含 1.1版的所有功能,並新增對 .NET 擴充性和輸出回應重寫的支援。 更具體來說,它可以用來:

  • 使用以 .NET 撰寫的重寫提供者,實作複雜的重寫邏輯
  • 將回應 HTML 中 Web 應用程式所產生的 URL 取代為更方便使用的 URL,並讓搜尋引擎更容易使用
  • 修改反向 Proxy 後方 Web 應用程式所產生之 HTML 標籤中的連結。
  • 使用正則運算式模式比對來修正任何 HTTP 回應的內容。
  • 修改 HTTP 要求和回應標頭和 IIS 伺服器變數。

功能

URL Rewrite 2.0 包含下列主要功能:

  • RTW) 中新的自訂重寫提供者 (。 當 URL 重寫邏輯無法以正則運算式模式表示,或需要根據儲存在web.config (檔案外部的資料進行重寫決策時,可以使用重寫提供者,例如 SQL Database 或文字檔) 。 客戶重寫提供者可以使用 任何 .NET 語言來實作
  • 以規則為基礎的回應重寫引擎。 輸出規則可用來表達要比較回應部分與 的邏輯,以及比較成功時該怎麼辦。 網頁伺服器和網站管理員可以使用輸出規則來定義複雜的回應重寫邏輯。
  • 重寫特定 HTML 標籤的內容。 規則可以設定為只查看特定 HTML 標籤內部,例如 < img ><> 等,而不是掃描特定相符專案的整個回應。如此一來,模式就會大幅簡化,而且將規則套用至內容的程式,相較于將模式套用至整個回應,會更快。
  • 輸出規則的前置條件。 在每個回應上套用重寫規則是昂貴的作業,而且在大部分情況下都不需要。 預先條件可用來檢查回應中繼資料,以判斷是否應該套用輸出規則評估。
  • 重寫伺服器變數和 HTTP 要求標頭。 您可以使用重寫規則來設定各種 IIS 伺服器變數和 HTTP 要求標頭。
  • 重寫 HTTP 回應標頭。 輸出重寫規則可以用來修改任何現有的 HTTP 回應標頭,或設定新的回應標頭。
  • 伺服器變數允許清單。 若要防止分散式重寫規則意外或有目的地修改可能會影響 Web 應用程式安全性或執行時間行為的 IIS 伺服器變數,現在必須明確地將可修改的伺服器變數新增至允許清單。
  • HtmlEncode 函式。 輸出重寫通常會使用不受信任的資料 (例如查詢字串或 HTTP 標頭) 來建置取代字串以插入 HTTP 回應中。 在這些情況下,應該使用 HtmlEncode 函式來防止將用戶端腳本插入回應中,這可能會導致跨網站腳本弱點。
  • 追蹤跨規則條件的擷取群組。 URL Rewrite 1.1 中的條件反向參考邏輯僅適用于最後一個相符的條件。 在 v2 中,您可以設定反向參考邏輯,以針對所有相符的條件運作。
  • RTW) 中新的搜尋引擎優化規則範本 (。 三個新的規則範本可讓您輕鬆地建立重新導向規則,以強制使用您網站上的網頁標準 URL。
  • RTW) 中的新功能 (反向 Proxy 規則範本。 此範本可用來非常快速地產生實作反向 Proxy 組態的輸入和輸出重寫規則。
  • 重寫 URL 的記錄。 重寫規則可以設定為在 IIS W3C 記錄中記錄重寫的 URL,而不是記錄原本要求的 URL。
  • 已更新 IIS 管理員中的使用者介面。 使用者介面已大幅改善,更能代表模組組態,並簡化這類常見工作,例如設定重寫規則和重寫條件。

安裝模組

使用位於模組首頁的連結下載 URL Rewrite 2.0 https://www.iis.net/extensions/urlrewrite

注意

  • 如果已安裝舊版的 URL 重寫,例如 v1.0 和 v1.1,則會將其升級至 v2.0
  • 如果已安裝 URL Rewrite 2.0 的 RC 版本,則會升級至 RTW 版本。

已知問題

  1. 回應重寫不適用於靜態壓縮。 您必須停用 IIS 靜態壓縮,才能使用回應重寫。
  2. 如果已啟用 rewriteBeforeCache ,則輸出規則不會套用至區塊傳輸編碼回應。 如果您需要重寫已編碼區塊傳輸的回應,請將 rewriteBeforeCache 設定為 false。

安裝擴充性範例

URL 重寫擴充性範例包含 .NET 元件,以及實作這些提供者的原始程式碼:

  • DbProvider - 此提供者可用來藉由執行預存程式,從SQL Server資料庫資料表擷取重寫對應;
  • FileMapProvider - 此提供者可用來擷取儲存在文字檔中的重寫對應;
  • FileContainsProvider - 此提供者可用來檢查文字檔中是否有任何字串是提供者輸入字串的子字串。

從 MSDN 程式碼庫下載 URL 重寫擴充性範例

使用模組

這些文章涵蓋 URL Rewrite v2.0 的功能,並說明如何使用它來完成常見的重寫案例。

逐步解說

功能參考