如何在IIS中将https://domain.com重定向到https://www.domain.com

时间:2016-09-30 10:42:22

标签: iis url-rewriting

如果我只在浏览器中输入https://domain.com而非www.domain.com,domain.com或https://www.domain.com,则我的网站目前无效。 我的网络配置代码是:                                                                     

    <rule name="Redirect to HTTPS">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTPS}" pattern="OFF" />
        </conditions>
        <action type="Redirect" url="https://www.domain.com/" redirectType="Permanent" appendQueryString="false" />
    </rule>


        <!-- code for redirect https://domain.com to https://www.domain.com/ -->

        <rule name="Redirect to HTTPS without www" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAny">
              <add input="{HTTP_HOST}" pattern="^[^www]" />
              <add input="{HTTPS}" pattern="off" />
          </conditions>
            <action type="Rewrite" url="https://www.domain.com/" appendQueryString="false" />
        </rule>



        <!-- end -->


         <rule name="Add WWW prefix to DOMAIN.COM">
              <match url="(.*)" ignoreCase="true" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="^domain\.com" />
              </conditions>
              <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
            </rule>

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。

所有重写规则都是正确的,但在IIS的绑定部分,我们只添加了三个绑定:

1.http://domain.com
2.http//www.domain.com
3.https://www.domain.com

这里没有为https://domain.com添加绑定,所以一旦我添加了它,所有规则都能正常工作。

答案 1 :(得分:0)

你不需要:

 <rule name="Redirect to HTTPS without www" stopProcessing="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAny">
          <add input="{HTTP_HOST}" pattern="^[^www]" />
          <add input="{HTTPS}" pattern="off" />
      </conditions>
        <action type="Rewrite" url="https://www.domain.com/" appendQueryString="false" />
    </rule>

由于此规则会执行相同的操作,因此请将所有httphttps重定向到www

<rule name="Add WWW prefix to DOMAIN.COM">
         <match url="(.*)" ignoreCase="true" />
          <conditions>
              <add input="{HTTP_HOST}" pattern="^domain\.com" />
          </conditions>
      <action type="Redirect" url="https://www.domain.com/{R:1}" redirectType="Permanent" />
 </rule>

我认为您遇到的问题是您在IIS中site level而不是server level应用它。因此,在IIS中单击计算机名称,然后在那里添加规则,这将把它存储在applicationhost.config文件中。

服务器级别以红色圈出,站点级别低于它。

enter image description here