IIS 7.5, 8 - 設定 HTTP 重新導向

當你想將網站訪客從某個 IIS 中的站台重新導向到其他網站時,可以使用 HTTP 重新導向功能。

最近遇到一個需求,有兩個網域都指向到同一個網站,其中一個網域不打算用,但由於這個不打算用的網域歷史悠久,搜尋引擎還持續收錄,也還有人透過該網域進入,貿然停用的後果可能導致訪客找不到網站,這時候重新導向就非常有用。
透過 IIS 中 HTTP 重新導向的功能將訪客導向到新網域,不怕訪客找不到網站。

安裝 HTTP 重新導向服務

必須安裝HTTP 重新導向服務才能在 IIS 中使用重新導向。

如果你使用 Windows Server 2008 R2

如果你使用 Windows 8

設定站台重新導向

進入你要導向的站台,點選 [HTTP 重新導向] 功能。

勾選 [將要求重新導向至此目的地],並輸入導向目的地網址。

重新導向行為:

導向時傳遞 querystring 參數

如果導向時想將 querystring 一起傳到目的地,預設是沒有辦法的,例如:

http://old.host/path/file.html?page=1 會導向至 http://old.host/path/file.html

可以發現 ?page=1 被捨棄了,但好在 IIS 提供一些參數讓我們自訂目的地格式解決這個問題,解決方法如下。

  • 勾選 [將要求重新導向至此目的地],在目的地後方加上 $V$Q

    http://new.host$V$Q
    
  • 勾選 [將所有要求重新導向至確切的目的地 (而非目的地的相對位置)]

套用設定,當開啟帶 querystring 的網址時,連 querystring 也一起導向了。

http://old.host/path/file.html?page=1 會導向至 http://new.host/path/file.html?page=1

以下是支援的參數:

  • $S
    傳遞網址中的後綴部分。

  • $P
    傳遞網址中的 querystring 部分,但不包含問號 (?)。

  • $Q
    傳遞網址中的 querystring 部分,包含問號 (?)。

  • $V
    傳遞網址中除了伺服器名稱、querystring 之外的部分,與 $Q 搭配就可以組成 script name + querystring。

另外需注意 [將所有要求重新導向至確切的目的地 (而非目的地的相對位置)] 選項,不勾選的話 script name 會被加到後方,變成:

http://new.host/自訂的參數/path/file.html

Reference

Simple HTTP Redirect with Querystring in IIS7
http://oneidia.blogspot.co.uk/2010/09/simple-http-redirect-with-querystring.html
Redirect Reference
http://technet.microsoft.com/en-us/library/cc737576.aspx