防止子域重定向到HTTPS

时间:2018-02-04 08:19:25

标签: asp.net iis url-rewriting iis-7 iis-8

应用生产转换时,我在web.config中有以下重写规则。

<system.webServer> <rewrite xdt:Transform="Insert"> <rules> <rule name="Redirect-HTTP-TO-HTTPS" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions logicalGrouping="MatchAny"> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer>

当我将具有登台转换的单独网站部署到同一个IIS实例时,此规则不会添加到我的web.config。然而,staging.example.com的流量仍然被规则所吸引。

似乎生产规则仍在追赶它?

制作网址:example.com

暂存网址:staging.example.com

我如何使这条规则不那么贪心,因此它不会重定向暂存流量。

1 个答案:

答案 0 :(得分:1)

您可以在规则中添加其他条件,以忽略staging.example.com:

<rule name="Redirect-HTTP-TO-HTTPS" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTPS}" pattern="off" />
    <add input="{HTTP_HOST}" pattern="^staging\.example\.com$" negate="true" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" appendQueryString="true" />
</rule>

请注意,浏览器通常会缓存301重定向。应用此规则后,请清除浏览器的缓存或使用隐身模式