如何从 web.config 重写规则中排除目录?

How do I exclude a directory from a web.config rewrite rule?

我们有一个从 http 到 https 的重写规则,并且工作正常。但是,我们有一个目录 "complaints",我们不希望应用该规则。我以为我知道该怎么做,并且在过去的几个小时里研究了它,它似乎是正确的,但它不起作用。

这是规则...

<rule name="https redirect" stopProcessing="true">
     <match url="(.*)" />
     <conditions>
          <add input="{HTTPS}" pattern="^OFF$" />
          <add input="{REQUEST_URI}" pattern="^complaints$" negate="true"/>
     </conditions>
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>

我也试过这种方法,对我也行不通...

<rules>
<rule name="skip rule" stopProcessing="true">
    <match url="^complaints$" />
    <action type="None" />
</rule>
<rule name="https redirect" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>

进行这些更改后,我还 运行 IISRESET。

有人知道为什么不忽略 "complaints" 目录吗?

我从正在工作的 web.config 文件中删除了额外的代码,而是在 "complaints" 目录中创建了一个 web.config,其中包含以下...

<rules>
     <clear />
</rules>

这会导致 "complaints" 目录忽略从父目录继承的规则。