【问题标题】:IIS URL Rewrite - if query parameter(s) is missingIIS URL 重写 - 如果缺少查询参数
【发布时间】:2013-04-21 15:45:08
【问题描述】:

所以这不是你今天的日常需求 :)

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

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

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

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

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

【问题讨论】:

    标签: iis url-rewriting


    【解决方案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

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

    【讨论】:

    • 我需要检查多个参数,你能举个例子吗?
    • 你可以使用这个网站来尝试你的正则表达式模式regexlib.com/RETester.aspx?AspxAutoDetectCookieSupport=1
    • 这仍然会检查参数是否完全匹配。我需要测试参数是否存在以及是否有任何值。
    • 示例在问题中:?lon=VALUE_OR_NOVALUE&amp;lat=VALUE_OR_NOVALUE&amp;zoom=VALUE_OR_NOVALUE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2013-10-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多