URL IIS Перезаписать основной сайт перенаправить на синий / зеленый записи - PullRequest
0 голосов
/ 27 декабря 2018

Во-первых, я не очень хорош в написании регулярных выражений, поэтому извиняюсь за это.

Я пытаюсь настроить 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 состояний.

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

1 Ответ

0 голосов
/ 28 декабря 2018

следующее регулярное выражение вернет 2 символа из конца строки [a-z]{2}$, если после этого может быть / /, то это будет выглядеть так [a-z]{2}/?$

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...