IIS 7.5 URL重写规则,用于根据用户代理处理请求

时间:2013-04-09 14:19:15

标签: iis url-rewriting url-rewrite-module

我已根据用户代理编写了重定向请求的规则。

规则设置为将默认请求(不是移动设备)重定向到Domain1,并将请求从移动设备重定向到移动域Domain2

目前,即使在应用移动重定向后,移动设备的所有请求都会转到Domain1 找到下面的重定向规则。谁能告诉我我错过了什么?

<rewrite>
    <rules>
        <rule name="Mobile UA redirect" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_USER_AGENT}" pattern="^.*BlackBerry.*$ " />
                <add input="{HTTP_USER_AGENT}" pattern=".*Mobile.*Safari" />
            </conditions>
            <action type="Redirect" url="MobileURL" />
        </rule>
        <rule name="Claritinchallenge to" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <action type="Redirect" url="Second Domain" appendQueryString="false" />
            <conditions>
            </conditions>
        </rule>
    </rules>
</rewrite>

1 个答案:

答案 0 :(得分:6)

Mobile UA redirect规则中,条件逻辑分组是默认值:MatchAll

我不认为HTTP_USER_AGENT匹配^.*BlackBerry.*$的手机也会匹配.*Mobile.*Safari。因此,您需要将逻辑分组更改为MatchAny

您的规则将是:

<rule name="Mobile UA redirect" enabled="true" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_USER_AGENT}" pattern="^.*BlackBerry.*$ " />
    <add input="{HTTP_USER_AGENT}" pattern=".*Mobile.*Safari" />
  </conditions>
  <action type="Redirect" url="MobileURL" />
</rule>