IIS重定向规则基于多个(但不是全部)条件

时间:2013-01-14 14:19:35

标签: asp.net url iis redirect iis-7.5

我有一个重写,设置为处理多个不同的用户代理,我希望能够在任何一个上匹配我的规则。但是,任何与其中一个匹配的URL也必须与另一个规则(IP地址)匹配。但是,我找不到任何关于如何执行此操作的文档。任何人都可以就我如何做到这一点提出任何建议吗?

下面是我想要实现的一个例子。我知道这会失败,因为conditions节点已被多次声明。

因此,实质上,当任何{HTTP_USER_AGENT}规则任何{REMOTE_ADDR}规则匹配时,它都是重定向。

<rule name="Mobile UA redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <!-- Any of these can be matched -->
    <add input="{HTTP_USER_AGENT}" pattern="Android" />
    <add input="{HTTP_USER_AGENT}" pattern="BlackBerry" />
    <!-- ... more user agents... -->
  </conditions>
  <!-- Here, similarly, any one of these rules can be matched, but one of the rules above must also match one of the rules below. -->
  <conditions logicalGrouping="MatchAny">
    <add input="{REMOTE_ADDR}" pattern="127.0.0.1" />
    <add input="{REMOTE_ADDR}" pattern="192.168.0.1" />
  </conditions>
  <action type="Redirect" url="http://mob.mydomain.com/{R:0}" appendQueryString="true" />
</rule>

我将非常感谢您对我如何做到这一点的任何帮助!

1 个答案:

答案 0 :(得分:1)

如下所示的smth怎么样,位于底部:

<rule name="MobileRestricted" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll">
    <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="192.168.0.1" negate="true" />        
  </conditions>
  <action type="None"/>
</rule>
<rule name="Mobile UA redirect" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <!-- Any of these can be matched -->
    <add input="{HTTP_USER_AGENT}" pattern="Android" />
    <add input="{HTTP_USER_AGENT}" pattern="BlackBerry" />
    <!-- ... more user agents... -->
  </conditions>
  <action type="Redirect" url="http://mob.mydomain.com/{R:0}" appendQueryString="true" />
</rule>

不是一条规则,但不超过两条)