防止子域重定向到 HTTPS

Prevent subdomain from redirecting to HTTPS

当应用生产转换时,我的 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 的流量仍受规则约束。

好像生产规则还在抓它?

生产 url:example.com

分期 url:staging.example.com

我如何让这个规则不那么贪婪,这样它就不会重定向暂存流量。

您可以在规则中添加其他条件以忽略 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 重定向。应用此规则后,请清除浏览器的缓存或使用隐身模式