IIS: переписать URL с помощью регулярного выражения, но сохранить строки запроса - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть следующая ссылка

https://example.com/myapp/green?&lang=en&instance=some%20instance

Мне нужно переписать ее по следующей ссылке

https://example.com/myapp?color=green&lang=en&instance=some%20instance

цвет в ссылке может быть любого цвета, но его нужно переписать, как во 2-й ссылке, так чтобы конечный sla sh был заменен на ?, за которым следовало бы слово color= и ? в конце слово цвета должно быть удалено.

/myapp/green? становится /myapp?color=green,

/myapp/blue? становится /myapp?color=blue

и так далее, все с сохранением остальных строки запроса &lang=en&instance=some%20instance intact

Я пытался найти выход из этого правила, но я обычно все ловлю или непреднамеренно пропускаю остальную часть строки запроса.

Любые идеи о том, что лучший подход?

РЕДАКТИРОВАТЬ: заметил, что IIS, при применении к уровню приложения (не уровня веб-сайта), путь URL-адреса ввода после «/ myapp /», и мне нужно удалить конечный sla sh. Значит ли это, что мне придется применять его на уровне веб-сайта?

1 Ответ

0 голосов
/ 28 февраля 2020

Вы можете использовать приведенное ниже правило перезаписи URL (добавьте это правило на уровне сайта):

<rule name="color query" enabled="true" stopProcessing="true">
                <match url="myapp/(.*)/$" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{QUERY_STRING}" pattern="lang=(.*)&amp;instance=(.*)" />
                </conditions>
                <action type="Redirect" url="http://www.sample1.com/myapp?color={R:1}&amp;lang={C:1}&amp;instance={C:2}" appendQueryString="false" />
            </rule>

enter image description here

Примечание: вы не можете удалить myapp / from URL будет автоматически добавлен в URL.

...