首页 > 解决方案 > 缺少查询字符串参数时,如何在 IIS 中制定重写规则?

问题描述

当 URL 缺少查询字符串的一部分时,我想重定向。所以,例如

https://www.example.com?foo=1&bar=2

是一个有效的网址,不要做任何事情。但是,当 url 看起来像这样时:

https://www.example.com?foo=1我想重定向到https://www.example.com. 这里缺少“bar”,但“bar”可以是任何名称。

为此,我想使用 IIS 重定向使用正则表达式。我发现了这个问题:IIS URL Rewrite - if query parameter(s) is missing但我无法让它在我的场景中工作。这是因为 之后的每个其他查询字符串参数?都可以具有任何名称。第一个参数总是foo,但其余参数可以有任何名称。

有人可以帮我使用正确的正则表达式吗?

编辑:必须重定向的查询字符串的真实示例:

?crop=0,0,0,0或者 ?crop=2.6111111111111112,0.22222222222222221,0,0

两者都缺少,&所以它们必须被重定向。

标签: regexiisurl-rewriting

解决方案


您可以尝试以下 url 重写规则:

<rule name="query string rule" stopProcessing="true">
                <match url="(.*)" negate="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{QUERY_STRING}" pattern="^foo=(\d{0,5})$" />
                </conditions>
                <action type="Redirect" url="http://www.sample1.com/" appendQueryString="false" />
            </rule>

推荐阅读