使用重寫規則強制 HTTPS

此示例顯示如何使用 IIS 重寫規則通過使所有 HTTP 請求返回 301(永久)重定向到 HTTPS 頁面來強制 HTTPS。

這通常比使用 [RequireHttps] 屬性更好,因為該屬性使用 302 重定向,並且在 MVC 管道中,它比在 IIS 級別執行它要慢得多。

   <rewrite xdt:Transform="Insert">
      <rules>
        <rule name="Enforce HTTPS WWW" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
            <add input="{HTTP_HOST}" pattern="^(?!www)(.*)"/>
            <add input="{URL}" pattern="^(.*)"/>
            <!-- {URL} Gives the base portion of the URL, without any querystring or extra path information, for example, "/vdir/default.asp". -->
          </conditions>
          <action type="Redirect" url="https://www.{C:1}{C:2}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>