Как ограничить область действия правила для исходящего трафика определенным сайтом с помощью перезаписи URL-адреса в IIS

Я использую перезапись URL-адреса в IIS, чтобы действовать как обратный прокси.

Одна из служб http, стоящая за прокси-сервером, - это портал . HTML-код, возвращаемый порталом, представляет собой количество ресурсов, на которые ссылаются с использованием относительного пути, например /images/logo.png

, поскольку доступ к порталу осуществляется извне как mydomain. com / portalX мне нужно создать исходящее правило, которое переписывает любые относительные ссылки внутри html, чтобы добавить суффикс portalX, так что путь:

/images/logo.png 

станет

/portalX/images/logo.png

Проблема в том, что мне нужно установить предварительное условие, которое ограничивает исходящее правило до конкретный сайт. Если я этого не сделаю, функция url rewrite перезаписывает все относительные пути для всех защищенных сайтов.

Как мне это сделать? Есть ли другой способ сделать это?

Вот правило, которое мне нужно, чтобы ограничить использование PortalX:

<rule name="PortalX - Relative paths" preCondition="ResponseIsHtml1" enabled="true">
    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        </conditions>
    <action type="Rewrite" value="/PortalX/{R:1}" />
</rule>

<preConditions>
    <preCondition name="ResponseIsHtml1">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />          
     </preCondition>
</preConditions>
0
задан 2 August 2018 в 02:55
1 ответ

Нашел способ здесь , добавив к правилу следующее условие:

<add input="{URL}" pattern="^/(portalX)/.*" /> 

Примечание: portalX - это имя домена за прокси.

Здесь полное определение правила:

<rule name="PortalX - Relative paths" preCondition="ResponseIsHtml1" enabled="true">
    <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        <add input="{URL}" pattern="^/(portalX)/.*" />
     </conditions>
    <action type="Rewrite" value="/PortalX/{R:1}" />
</rule>
0
ответ дан 5 December 2019 в 05:26

Теги

Похожие вопросы