如果我只在浏览器中输入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>
答案 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>
由于此规则会执行相同的操作,因此请将所有http
和https
重定向到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文件中。
服务器级别以红色圈出,站点级别低于它。