Я пытаюсь создать правило перенаправления для проекта. NET Core, которое заменило бы значение строки запроса, чтобы помочь развернуть миграцию для некоторых идентификаторов. Например, URL-адрес:
http://www.somesite.com/page.html?somevar=abc&id=1234&othervar=cde
должен перенаправлять на
http://www.somesite.com/page.html?somevar=abc&id=b64540a6-b12d-443f-973f-673e4451ccbe&othervar=cde
В файле перезаписи я создал карту перезаписи как таковую:
<rewriteMaps>
<rewriteMap name="newIdentifierMap">
<add key="1234" value="b64540a6-b12d-443f-973f-673e4451ccbe" />
</rewriteMap>
</rewriteMaps>
Но теперь у меня возникли проблемы с созданием правила для использования этой карты. Это то, что я делал ...
<rule>
<match url=".*" />
<conditions>
<add input="{newIdentifierMap:REQUEST_URI}" pattern="(.*)id=([0-9]+)(.*)" />
</conditions>
<action type="Redirect" url="" RedirectType="Permanent" />
</rule>
Теперь я блокирую, не зная, как именно заменить значения на карте. Спасибо за любую помощь!
Решение
После проверки ответа, предоставленного @ abraham-qian, я смог решить проблему, применив следующие правила:
<rule>
<match url="(.*)" />
<conditions>
<add input="{QUERY_STRING}" pattern="(.*)(\bid=([0-9]+))(.*)" />
</conditions>
<action type="Redirect" url="{R:0}?{C:1}id={newIdentifierMap:{C:3}}{C:4}" RedirectType="Permanent" appendQueryString="false" />
</rule>
<rewriteMaps>
<rewriteMap name="newIdentifierMap">
<add key="1234" value="b64540a6-b12d-443f-973f-673e4451ccbe" />
</rewriteMap>
</rewriteMaps>
Кажется, это нормально работает с любым количеством переменных до или после переменной id в строке запроса.