Во-первых, я не очень хорош в написании регулярных выражений, поэтому извиняюсь за это.
Я пытаюсь настроить IIS для перезаписи URL-адресов из одной основной записи на вторичный сине-зеленый сайт ввода.В рамках установки с несколькими арендаторами пользователи перенаправляются с помощью сокращений штатов США.На данный момент мы будем искать только 2 буквы после имени домена.Весь трафик будет поступать на сайт основного входа https://dev.app.com
и перенаправляться на URL-адрес состояния оценки
Например: http://dev.app.com/ca
или http://dev.app.com/ny
По умолчанию пользователи, которые заходят вкорень сайта http://dev.app.com
будет автоматически перенаправлен на http://dev.app.com/ca
.CA является нашим состоянием по умолчанию.
Каждый штат имеет свой собственный сине-зеленый сайт входа.Например: http://ca.app.entry
.На сайтах с сине-зеленым входом есть правило обратного переписывания прокси-сервера, чтобы перенаправлять трафик на любой сайт, который в данный момент работает.Сине-зеленое правило перезаписи обновляется во время развертывания.
Кроме того, каждый штат имеет свой собственный API.Например: http://ca.api.com
.URL основной записи будет выглядеть следующим образом: https://dev.app.com/ca/ext
, и он будет перенаправлять трафик в API правильного состояния.
Я пытался настроить правила перезаписи, чтобы перехватывать сокращение состояния, а также искать ext
если он существует и переадресация на соответствующий сайт AI.
Для URL по умолчанию я начал с создания правила перенаправления, предшествующего правилам перезаписи
<httpRedirect enabled="true">
<add wildcard="/" destination="/ca" />
</httpRedirect>
Следующим правилом я являюсьпытаясь перехватить аббревиатуру состояния:
<rule name="StateRewrite" stopProcessing="true">
<match url="/([a-z]{2})/$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://{R:1}.app.entry" logRewrittenUrl="true" />
</rule>
Проверка выражения Я получаю правильную двухбуквенную аббревиатуру состояния, если после [state] / нет ничего.Так что http://dev.app.com/ca/someOtherqueryString не дает совпадения.Переход к http://dev.app.com/ca/ не направляет трафик в [state] .app.entry / [state].Если я иду прямо на сайт входа государства, это работает.Итак, перейдя к ca.app.entry / ca, вы попадете на правильный сине-зеленый сайт.Глядя на журналы, кажется, что не создается весь URL.Я вижу только /[state]/
в журнале: 2018-12-27 16:57:25 127.0.0.1 GET /ca/
Для сайта API я попробовал шаблонное правило, подобное этому (.*)/ext/(.*)
.Правило следует за правилом аббревиатур состояний, но оно по-прежнему не направляется на правильный сайт API состояний.
Я мог бы использовать некоторую помощь при построении правил и о том, как их нужно упорядочить.