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

IIS URL重写-如果缺少查询参数,iis,url-rewriting,Iis,Url Rewriting,所以这不是今天的“日常需求”: 我想创建一个规则,仅当缺少一些查询参数时,该规则才会重定向到其他页面 我发现了一些示例,如果参数存在,这些示例将重写/重定向, 但是如果我想检查它们是否不存在,我该怎么做呢 例如,这将测试参数是否存在,并基于该参数重定向: <rule name="RedirectUserFriendlyURL1" stopProcessing="true"> <match url="^$" />

所以这不是今天的“日常需求”:

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

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

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

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

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

^((?!regex)。*$是不包含regex的正则表达式。 在这里阅读更多

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

更多例子- 如果只有缩放参数,则会出现查询字符串,并且缺少lat/lon
e、 g.查询字符串a)“纬度=23和缩放=10”b)“缩放=13”

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

现在您可以为其他参数指定默认值


我需要检查多个参数,你能举个例子吗?你可以使用这个网站来尝试你的正则表达式模式,这仍然会检查参数的精确匹配。我需要测试参数是否存在以及它是否有任何值。示例是这样的:
?lon=value\u或_NOVALUE&lat=value\u或_NOVALUE&zoom=value\u或_NOVALUE