Как сделать правило перезаписи в IIS при отсутствии параметра строки запроса? - PullRequest
0 голосов
/ 26 мая 2020

Я хочу перенаправить, когда в URL-адресе отсутствует часть строки запроса. Так, например,

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

- действительный URL-адрес, ничего не делайте. Но когда URL-адрес выглядит так:

https://www.example.com?foo=1, я хочу перенаправить на https://www.example.com. 'bar' здесь отсутствует, но 'bar' может иметь любое имя.

Для этого я хочу использовать перенаправления IIS с использованием регулярного выражения. Я нашел этот вопрос: Перезапись URL-адреса IIS - если отсутствуют параметры запроса , но я не могу заставить его работать в моем сценарии. Это связано с тем, что любой другой параметр строки запроса после ? может иметь любое имя. Первым параметром всегда является foo, но остальные параметры могут иметь любое имя.

Может ли кто-нибудь помочь мне с правильным регулярным выражением для этого?

Изменить: реальные примеры строк запроса, которые должны быть перенаправлены:

?crop=0,0,0,0 или ?crop=2.6111111111111112,0.22222222222222221,0,0

У обоих отсутствует &, поэтому они должны быть перенаправлены.

1 Ответ

1 голос
/ 27 мая 2020

Вы можете попробовать следующее правило перезаписи 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>
...