由於最近公司將原本http://www.ite2.com.tw 的網域換成https://www.ite2.com,所以進行了一堆站台的301轉址設定,雖然之前有設定過,但是常常會遺漏一些細節,所以以下會列出幾個時常忘記的設定細節,給大家參考。
A.如何開啟IIS重新導向(Windows Server 2012 R2 )
到控制台點選程式和功能,再選擇右側開啟或關閉Windows功能,會跳出新增角色及功能精靈視窗,然後打開網頁伺服器內的一般HTTP功能內勾選HTTP重新導向功能,然後依照指示完成安裝,然後就會在IIS內看到HTTP重新導向功能了。
B.設定永久轉址
如果需將舊的站台設定永久轉址,必須先開一個新的站台,將舊的網域從原始站台解除繫結,然後轉移繫結到新的站台上,然後再將新的網域設定在原始站台,並設定新站台使用HTTP重新導向功能轉址至原站台。
C.轉址差異
HTTP 301 / 302 轉址對一版使用者來說幾乎感覺不出差異,其主要的功能是給搜尋引擎來分辨轉址的狀態。
- HTTP 301:代表該網站已經永久轉移到另一個地方。通常用於網站搬家或網站改版,新舊版本路徑不相同,且須重新對應的情況。
- HTTP 302: 是告知搜尋引擎,這次只是暫時性的被轉址。常見的狀況是網站維護時,暫時原網址轉移到別的地方。
HTTP重新導向設定
打開重新導向功能,會發現只有幾個簡單的設定,如下圖所示,本文將分別說明各設定的用意。
- 將要求重新導向至此目的地
這個設定是用來設定要轉址的目標,也就是要轉去的網址,網址的設定規格為
http://目標URL[,Flags] ,其中Flags就如下圖所示,是含有($)的參數,可使用的Flags有四種,以下將分別介紹
- $S: 將原始URL的後綴(suffix)傳遞給新的URL。
- 後綴(suffix)的定義是在原始URL及目標URL中去除相同字串後保留在原始URL中的部分文字,例如原始URL為https://www.ite2.com/Home/Index/About,目標URL為https://www.ite2.com,其中的後綴字串為”/About”
- $P: 將原始URL中的參數(如QueryString)去除問號(?)然後傳遞給新的URL。
- $Q: 將原始URL中的參數(如QueryString)傳遞到新的URL(包括問號(?))。
- $V: 傳遞原始的URL但不保留原始域名名稱,也不保留任何參數。如果要包含參數必須 搭配$P或$Q一起使用
- 下圖中使用的設定為$S$Q的意思是保留後綴及QueryString,例如:
- 連結 http://www.ite2.com.tw/News.aspx?BID=7126&CID=1會導向至https://www.ite2.com/News.aspx?BID=7126&CID=1
- $S是為了保留”/News.aspx”,$Q則是保留”?BID=7126&CID=1”
- 但如果需要換域名的就必須使用$V來進行轉址,例如:要從https://www.ite2.com轉址至https://www.ite2nas.com,其設定舊必須為https://www.ite2nas.com$V
- 重新導向行為-將所有要求重新導向至確切的目的地(以下圖中設定導向網址為例)
- 將所有要求重新導向至確切的目的地 (而非目的地的相對位置)
- 如果有使用上述Flags參數,必須勾選此項目
- 不勾選的時候,會導向至相同的路徑,例如:
- 連結 會導向至
- 勾選時,會導向至固定的路徑,例如:
- 連結 會導向至 https://www.ite2.com/
- 只將要求重新導向至此目錄 (不是子目錄) 中的內容
- 勾選時,只有當瀏覽目前目錄時才會導向,子目錄則不會,例如
- 連結 http://www.ite2.com.tw/ITE2_NAS_ebook/index.html將不會導向
- 連結 會導向至
- 狀態碼
- 用來設定轉址狀態,如301或302。
當設定完成後,IIS會自動的去修改web.config的設定,如果覺得使用介面設定比較麻煩的人,也可以直接設定在web.config內,下圖就是上述的設定結果
如果設定都完成了,可以開啟瀏覽器的開發者工具來觀察是否已經轉址完成,下圖為永久轉址(HTTP 301)成功的示意圖。
D.Reference
- http://oneidia.blogspot.tw/2010/09/simple-http-redirect-with-querystring.html
- https://msdn.microsoft.com/en-us/library/ms525695(v=vs.90).aspx
- http://www.developerfusion.com/code/4678/permanent-301-redirect-with-querystring-in-iis/
- https://zh.wikipedia.org/wiki/HTTP_301
- https://zh.wikipedia.org/wiki/HTTP_302