IIS URL重写 - 如果缺少查询参数

时间:2013-04-20 05:27:44

标签: iis url-rewriting

所以今天“这不是你的日常要求”:)

我想创建一个规则,只有在缺少某些查询参数时才会重定向到其他页面。

我发现了一些如果参数存在会重写/重定向的例子, 但是,如果我想检查它们是否不存在,我该怎么办?

例如,这将测试参数是否存在并根据以下内容重定向:

        <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
            <match url="^$" />
            <conditions>
                <add input="{QUERY_STRING}" pattern="^lon=([^=&amp;]+)&amp;lat=([^=&amp;]+)&amp;zoom=([^=&amp;]+)$" />
            </conditions>
            <action type="Redirect" url="/{C:1}/{C:2}/{C:3}" appendQueryString="false" />
        </rule>

如何更改此规则以测试它们是否不存在?

1 个答案:

答案 0 :(得分:0)

^((?!regex)。)* $正则表达式不包含正则表达式。 在此处阅读更多内容http://bloggernitin.blogspot.in/2007/12/regex-for-doesnt-contain.html

如果您正在寻找像lon = xyz这样的东西,它们不存在于params中,那么请使用此正则表达式      ^(?!lon =(xyz))这将检查Lon param是否在字符串的开头不存在

  

更多示例 -

     

如果您遇到只有缩放参数的情况,那么查询字符串和lat / lon缺失   例如查询字符串a)&#34; lat = 23&amp; zoom = 10&#34; b)&#34; zoom = 13&#34;

  正则表达式 - ^(?!lon =。)(?!lat =。)zoom =([^ =&amp;] +)
  结果 - a)不匹配b)匹配$ 1 = 13

  现在你可以给其他参数提供默认值。