IIS 7.5 URL Rewrite rule to handle request based o

2019-05-11 05:34发布

问题:

I have written a rule to redirect request based on user agent.

The rule is set to redirect default requests (not mobile) to Domain1 and requests from mobile to mobile domain Domain2.

Currently even after applying mobile redirect all request from mobile are taken to Domain1 Find the redirect rule below. Can anyone tell me what I'm missing?

<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:

In your Mobile UA redirect rule, the conditions logical grouping is the one by default: MatchAll

I don't think a phone having a HTTP_USER_AGENT matching ^.*BlackBerry.*$ will also match .*Mobile.*Safari. So you need to change the logical grouping to MatchAny.

You rule would then be:

<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>