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

时间:2016-09-12 08:13:10

标签: iis https url-rewriting iis-8.5

我的"默认网站"我有一个重写规则。 (也就是在我的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 个答案:

答案 0 :(得分:2)

您不需要单独的规则。

  1. 打开IIS管理器展开站点并选择虚拟目录。
  2. 在中央窗格中,您可以看到所有模块。双击URL Rewrite。
  3. 选择重定向规则,然后在操作窗格中单击“禁用规则”。
  4. 此外,您可以在虚拟目录中添加web.config并在下面执行

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

    或者

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

    希望这有帮助。