使用重写规则强制 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>