IIS配置web.config实现http 301重定向到https

最近帮朋友申请ssl升级网站到https,需要将原有的http 301重定向到https,这牵扯到将http://www.domain.com、http://domain.com以及https://domain.com统一跳转到https://www.domain.com,也就是把域名从www和不带www的http,以及https不带www的都跳转到带www的https。可以在web.config文件内的<system.webServer>节点内添加如下配置即可。

<system.webServer>
  <rewrite>
    <rules>
      <!--http://www跳转到https://www-->
      <rule name="WWW HTTP to HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          <add input="{HTTP_HOST}" pattern="^www" ignoreCase="true" />
        </conditions>
        <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
      </rule>
      <!--http://跳转到https://www-->
      <rule name="None WWW HTTP to HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          <add input="{HTTP_HOST}" pattern="^[^www]" ignoreCase="true" />
        </conditions>
        <action type="Redirect" redirectType="Permanent" url="https://www.{HTTP_HOST}/{R:1}" />
      </rule>
      <!--https://跳转到https://www-->
      <rule name="None WWW HTTPS to HTTPS" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
          <add input="{HTTPS}" pattern="on" ignoreCase="true" />
          <add input="{HTTP_HOST}" pattern="^[^www]" ignoreCase="true" />
        </conditions>
        <action type="Redirect" redirectType="Permanent" url="https://www.{HTTP_HOST}/{R:1}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

另外,如果你的iis没有安装重定向模块,则需首先添加url重定向模块,否则上面的配置无法生效。

发表评论