是否有一个小写重写规则仍然允许CamelCaps AJAX方法?

时间:2013-07-18 18:49:15

标签: regex iis-7 url-rewrite-module

在我的iis7盒子上,我的web.config中有一个url重写规则,它将我的所有网址保持小写:

<rule name="LowerCaseRule1" stopProcessing="false">
    <match url="^((?=.*[A-Z]).*\.aspx)(.*)" ignoreCase="false" />
    <action type="Redirect" url="{ToLower:{R:1}}{R:2}" />
</rule>

这一直运行良好,但它还包含任何大写字母时重写我的AJAX WebMethod调用。因此,不会调用这些方法。一个显而易见的解决方案是将所有WebMethods保持为小写,但是从重写的正则表达式中对它进行攻击会更合适。

目前:

/Default.aspx ==&gt; /default.aspx

/Default.aspx/UpdateOrder ==&gt; /default.aspx/updateorder

我希望后一个例子重写为 /default.aspx/UpdateOrder

我的正则表达技巧无法让我在那里。

提前致谢, 约翰

1 个答案:

答案 0 :(得分:0)

我把这个问题放在一边,很久以后又回来了。我添加了一个否定条件,似乎可以解决这个问题:

<rule name="LowerCaseRule1" stopProcessing="false">
     <match url="^((?=.*[A-Z]).*\.aspx)(.*)" ignoreCase="false" />
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_URL}" matchType="Pattern" pattern="^([^A-Z]+\.aspx/)(.*)" ignoreCase="false" negate="true" />
     </conditions>
   <action type="Redirect" url="{ToLower:{R:1}}{R:2}" />
</rule>