Iis

在 IIS 中將所有 HTTP 重定向到 HTTPS 的最佳方法

  • September 23, 2020

我們希望我們的網路伺服器 (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 RewriteAdd 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>

引用自:https://serverfault.com/questions/893315