переписать правило для папки на другой хост - PullRequest
0 голосов
/ 21 февраля 2020

В локальной сети работают 2 приложения:

заголовки хоста: http://ui.local, http://api.local

На другом сервере, веб-сайт уже настроен для перезаписи URL. Заголовок сайта: http://externalui.mydomain.com

Вот содержимое web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://ui.local/{R:1}" />
                </rule>
            </rules>
        </rewrite>
<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
    </system.webServer>
</configuration>

Это правило перезаписи URL работает без проблем и перезаписывает все URL-адреса. сделано в http://externalui.mydomain.com в go в http://ui.local

Однако я хочу написать другое правило, поэтому запросы выполняются в http://externalui.mydomain.com/api/ .... будет переадресовано http://api.local/api/ ... взамен.

Как написать правило для этого условия?

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете использовать следующее правило:

 <rule name="redirect api" stopProcessing="true">
         <match url="api/(.*)" />
         <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
         <action type="Redirect" url="http://api.local/api/{R:1}" />
 </rule>
 <rule name="all redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
          </conditions>
          <action type="Redirect" url="http://ui.local/{R:1}" />
  </rule>

Примечание: убедитесь, что правило API должно быть первым правилом.

...