IIS 實現http重定向https(親測有效:解決URL重寫模組配置https重定向不生效的問題)

前言

以前部署網站的時候,都是通過程式碼來實現http重定向https,最近在部署個人網站的時候,突發奇想可不可通過IIS來實現無程式碼的重定向呢?
在一番操作猛如虎的搜索引擎操作後,發現只有google瀏覽器能實現重定向,在反覆對照網路教程後陷入了深深的自我懷疑。最後不得已只能一步一步來解析到底哪個地方出現了問題,現在將我重定向的步驟分享給大家。

實際操作

(一)下載IIS的「URL重寫」插件

提示:這個插件只支援 IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10

第一種安裝:通過IIS中的「Web平台安裝程式」。

注意:如果IIS中沒有這個安裝程式,就只能採用第二種安裝方式了。
首先:點擊IIS的左側主頁,進入主頁功能視圖後再點擊「Web平台安裝程式」

接下來:進入「Web平台安裝程式」後,先點擊「產品」標籤,然後在搜索框中輸入「url」回車進行搜索

最後:在搜索結果中就能看見「URL重寫工具」安裝包了,點擊安裝就可以了(因為我已經安裝過了就顯示的「已安裝」)

第二種安裝:通過微軟官網進行下載

microsoft url-rewrite鏈接地址://www.iis.net/downloads/microsoft/url-rewrite

(二)進行配置

通過上述安裝步驟,如果安裝成功,就能在主頁功能視圖中看見「URL重寫」功能模組了。

第一步:進入功能介面後,點擊右側的「添加規則」

第二步:在彈出的對話框中,點擊「空白規則」

第三步:進入入站規則編輯頁面
1、名稱部分
隨意填寫(我這兒因為是已經應用的規則,所以輸入框是灰色的,新建的時候是白色的可以輸入的)
2、匹配URL部分進行如下操作

序號 輸入位置 輸入內容
1 請求的URL 選擇「與模式匹配」
2 使用 選擇「正則表達式」
3 模式 輸入「^((https
4 忽略大小寫勾選框 勾上

3、條件部分的邏輯分組:選擇「全部匹配」,選中後點擊「添加」按鈕,然後在彈出的對話框中進行如下操作

序號 輸入位置 輸入內容
1 條件輸入 輸入「{HTTPS} 」
2 檢查輸入字元串是否 選擇「與模式匹配」
3 模式 輸入「^OFF$」
3 忽略大小寫勾選框 勾上

備註:這個條件的作用是為了屏蔽已經帶有https的鏈接再進行重定向。

提示:在匹配URL部分操作完成後可以點擊「測試模式」按鈕,在彈出的對話框中的「要測試的輸入數據」位置輸入「//www.test.org/first/second?one=text」或者其他任意你想測試的網址,就能看見我們剛輸入的正則表達式將網址如何進行了拆分。其中的{R:3}就是我們希望獲取的部分。

4、操作部分的邏輯分組:選擇「全部匹配」,選中後點擊「添加」按鈕,然後在彈出的對話框中進行如下操作

序號 輸入位置 輸入內容 備註
1 操作類型 選擇「重定向」
2 操作屬性-重定向URL 輸入「//{HTTP_HOST}/{R:3}」 特別提醒:{R:3}就是從匹配URL部分的正則表達式來的
3 操作屬性-附加查詢字元串勾選框 勾上
4 操作屬性-重定向類型 選擇「永久(301)」 如果沒有其他考量,建議http重定向https這種需求選擇永久

(三)確認後應用配置的規則

在上述操作完成後,點擊右側「應用」,然後進入瀏覽器輸入http測試就能看到重定向的效果了(提前安裝SSL證書哦_)。

寫在最後

一開始是想跟著網上的教程抄,省事兒。沒想到最後還是要自己一步一步來學著如何配置。
如果有小夥伴跟著以上內容進行配置後(且清除了瀏覽器快取)仍舊存在不生效的情況,可以在評論區留言。