天天看點

IIS将http強轉為https(重定向和重寫) - himmy

IIS将http強轉為https(重定向和重寫)

最近接到一個需求,客戶希望無論是http還是https請求都可以通路,并且http能轉換成https。研究了一圈發現iis的重定向和重寫都可以實作http強轉https,記錄一下。

用到的東東:

  Internet資訊服務(IIS)管理器7.0

       URL重寫子產品安裝包,下載下傳位址x64(32也有):http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=1b8c7bd8-8824-4408-b8fc-49dc7f951a00

       SSL證書

1、我們先來準備證書

①    打開IIS管理控制台,輕按兩下“伺服器證書”。

IIS将http強轉為https(重定向和重寫) - himmy

②   在彈出的視窗中,單擊右上角“導入”。

IIS将http強轉為https(重定向和重寫) - himmy

③    導入證書檔案,注意申請證書時如果填寫了密碼,這裡也要輸入相關密碼。

IIS将http強轉為https(重定向和重寫) - himmy

2、然後綁定https,讓站點可以接收http和https

①   右擊網站站點,選擇“編輯綁定”

IIS将http強轉為https(重定向和重寫) - himmy

②   在彈出的視窗中,單擊“添加”按鈕

IIS将http強轉為https(重定向和重寫) - himmy

③   切換類型為https,在證書下拉框中選擇剛剛導入的證書,最後單擊“确認”即可

IIS将http強轉為https(重定向和重寫) - himmy

*SSL設定不要勾選

IIS将http強轉為https(重定向和重寫) - himmy

3、接下來進入正題,記錄一下重定向和重寫的實作方式

重定向

通過url規則比對重定向到新的url中,使用浏覽器打開連結時,視覺上會看到http變成https,就好像打開http://www.baidu.com,連結會變成https://www.baidu.com

我這邊站點上挂了三個子站點,Api為接口,其他兩個為背景系統、H5

IIS将http強轉為https(重定向和重寫) - himmy

如果把重定向的規則建立在Sites上的話,下面的子站點将都适用于此規則,但是

弊端:對api進行post請求,url被重定向到新的位址上,由于是重定向跳轉,是以post請求會變成get請求,會出現問題。

解決辦法:如果不是所有都需要http強轉https,重定向規則就不要設定到總站點上,哪裡需要建哪裡就好

好了,我們開始建立重定向規則

①   安裝好URL重寫子產品成功後,在WeiSites和WeixinPlat站點分别添加URL重寫入站規則

單機需要建立規則的站點(以WeiSites為例),輕按兩下“URL重寫”,在右邊窗體中選擇“添加規則”,并添加一個空白規則,如下所示:

IIS将http強轉為https(重定向和重寫) - himmy
IIS将http強轉為https(重定向和重寫) - himmy

②   添加以下規則,如圖所示(名字随意):

IIS将http強轉為https(重定向和重寫) - himmy
IIS将http強轉為https(重定向和重寫) - himmy

模式:

(.*)

條件:

{HTTP} 與模式比對  ^OFF$

{HTTP_HOST} 與模式不比對 ^(localhost) 

③   填寫結束之後點選右上角的“應用”即可。

IIS将http強轉為https(重定向和重寫) - himmy

重定向完成,在浏覽器輸入你要通路的連結,如果是http,就會重定向到https了。需要做其他的重定向,修改規則就可以了,還是很強大的

IIS将http強轉為https(重定向和重寫) - himmy

比對規則取得是目前站點後面的路徑,是以規則不可直接寫http替換成https

重寫URL

 通過url規則比對重寫url,使用浏覽器打開連結時,視覺上不會看到變化

舉個最簡單的例子,現在有一個index.html,但是我希望在浏覽其中輸入index.himmy就能浏覽到這個頁面,且位址欄不會看到請求路徑的變化。像之前做.aspx重寫成.html還是很常見的。

建立一個空白入站規則

IIS将http強轉為https(重定向和重寫) - himmy

我們來測試下這個模式

IIS将http強轉為https(重定向和重寫) - himmy

我們可以看到我們的請求被拆分了幾塊,{R:1}就是我們需要截取的那部分,我們繼續

IIS将http強轉為https(重定向和重寫) - himmy

操作中設定重寫的url,将{R:1}和html拼接,就可以了。通路該網站時,himmy就會被替換成html,位址欄時看不到變化的。

同理,http重寫成https用重寫也是可以的,看需求定了。由于http和https是請求頭,是以需要和重定向一樣設定,看下面。

IIS将http強轉為https(重定向和重寫) - himmy

總站點比對規則取得是“/”後面的路徑

IIS将http強轉為https(重定向和重寫) - himmy

子站點比對的是站點後面的路徑

是以在實作http重寫成https時,比對規則和條件還是得按照重定向的寫(名字随便)

IIS将http強轉為https(重定向和重寫) - himmy

操作類型是重寫

IIS将http強轉為https(重定向和重寫) - himmy

就我此次需求而言,選擇的還是重定向,因為客戶要求位址欄發生變化。

完成。

posted on

2018-07-25 11:53 

himmy 

閱讀(19623) 

評論(1) 

編輯 

收藏 

舉報

IIS将http強轉為https(重定向和重寫) - himmy