IIS Rewrite Maps для сопоставления поддоменов
Я пытаюсь написать динамическое правило перенаправления в поддомен, используя функцию перезаписи карт в IIS, учитывая, что наш DNS-сервер направляет *.myapp.com на тот же балансировщик нагрузки и, в конечном счете, на одно и то же приложение.
Вот моя текущая рабочая реализация без Rewrite Maps (просто используя правило перенаправления):
<rules>
<rule name="Redirection rule for transition convenience when client requests new sub-domain url" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(OLD_CLIENT\.)(.*)$" />
</conditions>
<action type="Redirect" url="https://NEW_CLIENT.{C:2}/{R:1}" appendQueryString="true" redirectType="Found" />
</rule>
</rules>
Теперь я хочу достичь того же, но, позволив нашей операционной команде достичь вышеизложенного, не создавая новое правило перенаправления, а просто добавив новую запись сопоставления в переписывающих картах. Например, просто сделав следующее:
Я могу заставить карты перезаписи работать с относительным путем, но это не соответствует условию, когда я указываю что-то вроде old-client.myapp.com -> new-client.myapp.com.
Более того, как и в текущей рабочей реализации, которую я имею без карт перезаписи, я собираюсь сделать это без необходимости упоминания "myapp.com", но с использованием подстановочных знаков. Таким образом, я могу заставить правило перенаправления работать во всех нижеприведенных сценариях:
- old-client.localhost -> new-client.localhost (локальный)
- old-client.uat.myapp.com -> new-client.uat.myapp.com (UAT)
- old-client.myapp.com -> new-client.myapp.com (PROD)
- и т. д. (наши разработчики могут указать собственный URL для тестирования - например, mytestapp.com)
Вот моя работа над этим:
<rewriteMaps>
<rewriteMap name="Test">
<add key="^(OLD_CLIENT\.)(.*)$" value="https://NEW_CLIENT.{C:2}/{R:1}" />
<!-- if possible, my final objective is something simpler like this: -->
<add key="OLD_CLIENT" value="NEW_CLIENT" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Using rewrite maps (test)" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{Test:{REQUEST_URI}}" pattern="..." />
</conditions>
<action type="Redirect" url="..." appendQueryString="false" />
</rule>
</rules>
Примечание: я искал много существующих вопросов в SO / других источниках по этому поводу, но я полагаю, что ничто особенно не касается переадресации субдомена с использованием правила общего назначения через Rewrite Maps.