IIS 8.5 禁用虚拟目录的重写规则

IIS 8.5 disable rewrite rule for virtual directory

我的 "Default Web Site"(也就是我的 wwwroot 的 web.config)有一个重写规则,将所有 HTTP 请求重定向到 HTTPS,如下所示:

<rule name="http to https" enabled="true" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

现在我想禁用或排除此目录下的虚拟目录,这样我只能通过 HTTP 访问它。如何做到这一点?

我尝试过的方法:创建与 virt.dir 的名称相匹配的规则,并选择停止任何进一步的操作(未成功):

<rule name="testsite no https" enabled="true" stopProcessing="true">
  <match url="(testsite)" ignoreCase="true" />
  <action type="None" />
  <conditions>
    <add input="{URL}" pattern="(testsite)" />
  </conditions>
</rule>

为第一条规则添加了否定条件(未成功)

 <add input="{URL}" pattern="(testsite)" negate="true" />

我做错了什么?

您不需要为此制定单独的规则。

  1. 打开 IIS 管理器展开站点和 select 虚拟目录。
  2. 在中央窗格中,您可以看到所有模块。双击 URL 重写。
  3. Select 重定向规则并在操作窗格中单击禁用规则。

您也可以在虚拟目录中添加 web.config 并执行以下操作

<system.webServer>
    <rewrite>
      <rules>
        <remove name="testsite no https" />
      </rules>
    </rewrite>
</system.webServer>

将您的匹配条件从 <match url="(.*)" /> 更改为 <match url="^((?!testsite).)*$" /> 所以基本上这将适用于所有 URLS,但包含 testsite 的除外。

希望对您有所帮助。