最近接到一個需求,客戶希望無論是http還是https請求都可以訪問,並且http能轉換成https。研究了一圈發現iis的重定向和重寫都可以實現http強轉https,記錄一下。 用到的東東: Internet信息服務(IIS)管理器7.0 URL重寫模塊安裝包,下載地址x64(32也有):htt ...
最近接到一個需求,客戶希望無論是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管理控制台,雙擊“伺服器證書”。
② 在彈出的視窗中,單擊右上角“導入”。
③ 導入證書文件,註意申請證書時如果填寫了密碼,這裡也要輸入相關密碼。
2、然後綁定https,讓站點可以接收http和https
① 右擊網站站點,選擇“編輯綁定”
② 在彈出的視窗中,單擊“添加”按鈕
③ 切換類型為https,在證書下拉框中選擇剛剛導入的證書,最後單擊“確認”即可
*SSL設置不要勾選
3、接下來進入正題,記錄一下重定向和重寫的實現方式
重定向
通過url規則匹配重定向到新的url中,使用瀏覽器打開鏈接時,視覺上會看到http變成https,就好像打開http://www.baidu.com,鏈接會變成https://www.baidu.com
我這邊站點上掛了三個子站點,Api為介面,其他兩個為後臺系統、H5
如果把重定向的規則建立在Sites上的話,下麵的子站點將都適用於此規則,但是
弊端:對api進行post請求,url被重定向到新的地址上,由於是重定向跳轉,所以post請求會變成get請求,會出現問題。
解決辦法:如果不是所有都需要http強轉https,重定向規則就不要設置到總站點上,哪裡需要建哪裡就好
好了,我們開始創建重定向規則
① 安裝好URL重寫模塊成功後,在WeiSites和WeixinPlat站點分別添加URL重寫入站規則
單機需要建立規則的站點(以WeiSites為例),雙擊“URL重寫”,在右邊窗體中選擇“添加規則”,並添加一個空白規則,如下所示:
② 添加以下規則,如圖所示(名字隨意):
模式:
(.*)
條件:
{HTTP} 與模式匹配 ^OFF$
{HTTP_HOST} 與模式不匹配 ^(localhost)
③ 填寫結束之後點擊右上角的“應用”即可。
重定向完成,在瀏覽器輸入你要訪問的鏈接,如果是http,就會重定向到https了。需要做其他的重定向,修改規則就可以了,還是很強大的
匹配規則取得是當前站點後面的路徑,所以規則不可直接寫http替換成https
重寫URL
通過url規則匹配重寫url,使用瀏覽器打開鏈接時,視覺上不會看到變化
舉個最簡單的例子,現在有一個index.html,但是我希望在瀏覽其中輸入index.himmy就能瀏覽到這個頁面,且地址欄不會看到請求路徑的變化。像之前做.aspx重寫成.html還是很常見的。
新建一個空白入站規則
我們來測試下這個模式
我們可以看到我們的請求被拆分了幾塊,{R:1}就是我們需要截取的那部分,我們繼續
操作中設置重寫的url,將{R:1}和html拼接,就可以了。訪問該網站時,himmy就會被替換成html,地址欄時看不到變化的。
同理,http重寫成https用重寫也是可以的,看需求定了。由於http和https是請求頭,所以需要和重定向一樣設定,看下麵。
總站點匹配規則取得是“/”後面的路徑
子站點匹配的是站點後面的路徑
所以在實現http重寫成https時,匹配規則和條件還是得按照重定向的寫(名字隨便)
操作類型是重寫
就我此次需求而言,選擇的還是重定向,因為客戶要求地址欄發生變化。
完成。