Почему моя команда перенаправления URL не работает должным образом? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть внутренний сайт http://example/. Мне нужно перенаправить весь трафик c на новый внутренний сайт (http://newexample/) , за исключением всего содержимого в следующих двух подпапках:

  1. /Admin/
  2. /API/Test/

Вот что я попробовал:

<rewrite>
    <rules>
        <rule name="Redirect Example" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_URI}" pattern="^Admin/.*" negate="true"/>
                    <add input="{REQUEST_URI}" pattern="^API/Test/.*" negate="true"/>                       
            </conditions>
            <action type="Redirect" url="http://newexample/" appendQueryString="true" redirectType="Found" />
        </rule>
    </rules>
</rewrite>

У меня проблема в том, что он перенаправляет все , включая содержимое в две подпапки. Я также попытался удалить атрибут negate, который не приводит к перенаправлению страниц. Что я тут не так делаю?

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вам просто нужно внести небольшие изменения в ваше правило.

<rule name="Redirect Example" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_URI}" pattern="^/Admin/.*" negate="true" />
                    <add input="{REQUEST_URI}" pattern="^/API/Test/.*" negate="true" />                       
        </conditions>
        <action type="Redirect" url="http://newexample/" appendQueryString="true" redirectType="Found" />
    </rule>

enter image description here

0 голосов
/ 02 апреля 2020

Я выкладываю найденное мной решение в надежде, что оно кому-нибудь поможет позже. Все это было связано с <match url="(^$)" /> и атрибутом pattern в элементах add. Посмотрите внимательно на очень тонкие различия:

Я изменил:

<rewrite>
    <rules>
        <rule name="Redirect Example" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_URI}" pattern="^Admin/.*" negate="true"/>
                    <add input="{REQUEST_URI}" pattern="^API/Test/.*" negate="true"/>                       
            </conditions>
            <action type="Redirect" url="http://newexample/" appendQueryString="true" redirectType="Found" />
        </rule>
    </rules>
</rewrite>

на

<rewrite>
    <rules>
        <rule name="Redirect Example" enabled="true" stopProcessing="true">
            <match url="(^$)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{REQUEST_URI}" pattern="^Admin$" negate="true"/>
                    <add input="{REQUEST_URI}" pattern="^API/Test$.*" negate="true"/>               
            </conditions>
            <action type="Redirect" url="http://newexample/" appendQueryString="true" redirectType="Found" />
        </rule>
    </rules>
</rewrite>
...