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", но с использованием подстановочных знаков. Таким образом, я могу заставить правило перенаправления работать во всех нижеприведенных сценариях:

  1. old-client.localhost -> new-client.localhost (локальный)
  2. old-client.uat.myapp.com -> new-client.uat.myapp.com (UAT)
  3. old-client.myapp.com -> new-client.myapp.com (PROD)
  4. и т. д. (наши разработчики могут указать собственный 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.

0 ответов

Другие вопросы по тегам