IIS 7.5, 8 - 設定 HTTP 重新導向
當你想將網站訪客從某個 IIS 中的站台重新導向到其他網站時,可以使用 HTTP 重新導向功能。
最近遇到一個需求,有兩個網域都指向到同一個網站,其中一個網域不打算用,但由於這個不打算用的網域歷史悠久,搜尋引擎還持續收錄,也還有人透過該網域進入,貿然停用的後果可能導致訪客找不到網站,這時候重新導向就非常有用。
透過 IIS 中 HTTP 重新導向的功能將訪客導向到新網域,不怕訪客找不到網站。
安裝 HTTP 重新導向服務
必須安裝HTTP 重新導向
服務才能在 IIS 中使用重新導向。
如果你使用 Windows Server 2008 R2
如果你使用 Windows 8
設定站台重新導向
進入你要導向的站台,點選 [HTTP 重新導向] 功能。
勾選 [將要求重新導向至此目的地],並輸入導向目的地網址。
重新導向行為:
將所有要求重新導向至確切的目的地 (而非目的地的相對位置)
不勾選的時候,會導向至相同的路徑,例如:
開啟 http://old.host/path/file.html 會導向至 http://new.host/path/file.html
勾選時,會導向至固定的路徑,例如:
只將要求重新導向至此目錄 (不是子目錄) 中的內容
勾選時,只有當瀏覽目前目錄時才會導向,子目錄則不會,例如
開啟 http://old.host/path/file.html 將不會導向
開啟 http://old.host/file.html 會導向至 http://new.host/file.html狀態碼
可以選擇 301, 302, 307 轉址。
導向時傳遞 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 會被加到後方,變成:
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