为什么我的 url 重定向命令不能正常工作?

Why is my url redirect command not working properly?

我有一个内部网站 http://example/。我需要将所有流量重定向到新的内部站点 (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 属性。我在这里做错了什么?

您只需要对规则做一些小改动。

<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>

我发布了我找到的解决方案,希望它能对以后的人有所帮助。这一切都与 <match url="(^$)" />add 元素上的 pattern 属性有关。仔细观察非常细微的差异:

我改了:

<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>