Web.config重写模块

时间:2014-10-22 13:25:48

标签: regex web-config url-rewrite-module

我正在尝试弄清楚如何向我的web.config添加规则,以便它检测到.com部分之外的网址中任何的任何链接 - 然后处理下一个检测设备是否可移动的输入条件,然后重定向到m.mysite.com。

例如,以下是我希望它跳过移动重定向的一些示例:

  • 如果收到的链接是www.mysite.com/coupon/etc
  • 如果收到的链接是www.mysite.com?c=1

我确实希望它在所有仅包含www.mysite.com或mysite.com基本域的情况下重定向到移动网站。

这是我当前的web.config重写部分。

<rewrite>
  <rules>
    <rule name="MobileRedirect" patternSyntax="ECMAScript" stopProcessing="true">
      <match url=".*" ignoreCase="true"/>
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_COOKIE}" pattern="persistdesktop=1" ignoreCase="true" negate="true"/>
        <add input="{HTTP_USER_AGENT}" pattern="android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos"/>
      </conditions>
      <action type="Redirect" url="http://m.mysite.com" appendQueryString="false" redirectType="Found"/>
    </rule>
  </rules>

所以我最好的猜测是我需要在另外两个上面添加另一个条件。然后我将条件logicalGrouping参数更改为MatchAny?或者我是否在此现有规则之上创建另一条规则? 谢谢!

1 个答案:

答案 0 :(得分:1)

您尚未为ignoreCasetrue属性值设置为HTTP_USER_AGENT。匹配URL模式和查询字符串模式需要进行一些更改。

将重写配置更改为:

<rewrite>
    <rules>
        <rule name="MobileRedirect" stopProcessing="true">
            <match url="^$" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_COOKIE}" pattern="persistdesktop=1" negate="true" />
                <add input="{HTTP_USER_AGENT}" pattern="android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera" ignoreCase="true"/>
                <add input="{QUERY_STRING}" pattern="^$"/>
            </conditions>
            <action type="Redirect" url="http://m.mysite.com" redirectType="Found" />
        </rule>
    </rules>
</rewrite>