2

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

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

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

例如,这将测试参数是否存在并基于此重定向:

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

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

4

1 回答 1

1

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

如果您正在寻找参数中不存在 lon=xyz 之类的内容,请使用此正则表达式 ^(?!lon=(xyz)) 这将检查字符串开头是否不存在 lon 参数

更多例子——

如果您遇到只有缩放参数存在查询字符串并且缺少纬度/经度的情况,
例如查询字符串 a) "lat=23&zoom=10" b) "zoom=13"

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

现在您可以为其他参数提供默认值。

于 2013-04-20T08:16:52.443 回答