Iis

HTTP 重定向與 URL 重寫 (IIS)

  • November 13, 2017

在 IIS 菜單中,您有 HTTP Redirect 和 URL Rewrite。然後後者有一個重寫動作和一個重定向動作。我想知道所有這些之間有什麼區別。

HTTP 重定向是一個執行 HTTP 重定向的模組,它是一個帶有 Location 標頭的 300 級響應。瀏覽器讀取這個 300 級的響應,解析 Location 頭並重定向到指定的地址。從視覺上我們可以看到瀏覽器的地址發生了變化。

就最終結果而言,URL 的重定向操作類型與 HTTP 重定向完全相同。但是,通過 URL 重寫,我們可以製定更複雜的重定向規則,而我已經能夠使用 HTTP 重定向。

重寫 URL 會導致在許多模組執行之前將 URL 重寫為其他值。這會導致執行基於更改後的 URL 而不是原始 URL。這完全是伺服器端的,因此瀏覽器最終會收到 HTTP 響應。如果響應不是 300 級響應,我們甚至不會在瀏覽器中看到 URL 更改。

重寫範例

假設您有一個 ASP.NET Web 窗體頁面,該頁面有一個 /Users.aspx?id=3 頁面來查找使用者 3 的資訊。我們將創建一個匹配 ^users/(\d+)$ 的規則,並將此規則重寫為 /user.aspx?id={R:1}。這會導致像http://server/users/3這樣的 URL在內部被處理為http://server/users.aspx?id=3。瀏覽器不會看到地址更改。

與重定向相同的範例

如果上面的規則是重定向規則。URL /users/3 將導致 300 級響應,並將 Location 標頭設置為 /users.apsx?id=3,並且瀏覽器將導航到此頁面。我們會看到瀏覽器的地址為http://server/users.aspx?id=3

引用自:https://serverfault.com/questions/882678