ASP.NET web.config中的SSL规则异常

时间:2012-01-12 16:40:14

标签: asp.net wcf iis ssl rewrite

我有一个SSL证书,并在我的web.config中设置了重写规则,以将所有流量定向到https。这工作正常(下面的代码,如果有人发现它有用),但我现在有一个服务我暴露给我的手机客户端,我不希望它使用HTTPS。

我可以创建例外吗?因此,对www.mydomain.com/PhoneService/Seek.svc的任何请求都不会重定向到https://www.mydomain.com .....

<rewrite>
      <rules>
          <rule name="HTTP to HTTPS redirect" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                  <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
          </rule>
      </rules>
  </rewrite>

1 个答案:

答案 0 :(得分:4)

您可以对规则使用其他条件,以确保路径不会以seek.svc结尾:

<rules> 
  <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions>
        <add input="{HTTPS}" pattern="off" />
        <add input="{URL}" pattern="seek\.svc$" ignoreCase="true" negate="true" /> 
      </conditions> 
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /> 
  </rule> 
</rules>

该行:

<add input="{URL}" pattern="seek\.svc$" ignoreCase="true" negate="true" /> 

检查URL变量并以seek.svc结束。我们否定了条件,因为我们只希望规则在匹配时适用。