在 IIS 中將所有 HTTP 重定向到 HTTPS 的最佳方法
我們希望我們的網路伺服器 (IIS 10) 上的所有站點都強制執行 SSL(即將 HTTP 重定向到 HTTPS)。
我們目前在每個站點上都“需要 SSL”,並設置一個
403 error
處理程序來執行302 redirect
該特定站點的 https 地址。這很好用。但是對於每個站點來說都是一件痛苦的事情,人為錯誤的空間很大。
理想情況下,我想
301 redirect
在所有人HTTP://*
上建立一個永久的HTTPS://*
在 IIS 中是否有一種簡單的方法可以做到這一點?
IIS7+ 的 IIS URL 重寫模組 2.1 可能是您的朋友。該模組可以從IIS URL Rewrite下載。使用 URL 重寫模組和URL 重寫模組 2.0 配置參考解釋瞭如何使用該模組。
安裝模組後,您可以使用 IIS 管理器創建主機範圍的重定向。選擇URL Rewrite、Add Rule(s)…和Blank rule。
名稱:
重定向到 HTTPS
匹配 URL
請求的 URL:
Matches the Pattern
使用:
Wildcards
模式:
*
*忽略大小寫:*選中
條件
邏輯分組:
Match Any
條件輸入:
{HTTPS}
檢查是否輸入字元串:
Matches the Pattern
模式:
OFF
*忽略大小寫:*選中
*跨條件跟踪擷取組:*未選中
伺服器變數
留空。
操作
操作類型:
Redirect
重定向 URL:
https://{HTTP_HOST}{REQUEST_URI}
*附加查詢字元串:*未選中
重定向類型:
Permanent (301)
應用規則並執行 IISReset(或點擊 IIS 管理器中的重新啟動)
或者,在安裝模組後,您可以修改 applicationHost.config 文件,如下所示:
<system.webServer> <rewrite> <globalRules> <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" ignoreCase="true" negate="false" /> <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> <add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" /> </rule> </globalRules> </rewrite> </system.webServer>