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" />
我做错了什么?
您不需要为此制定单独的规则。
- 打开 IIS 管理器展开站点和 select 虚拟目录。
- 在中央窗格中,您可以看到所有模块。双击 URL 重写。
- Select 重定向规则并在操作窗格中单击禁用规则。
您也可以在虚拟目录中添加 web.config 并执行以下操作
<system.webServer>
<rewrite>
<rules>
<remove name="testsite no https" />
</rules>
</rewrite>
</system.webServer>
或
将您的匹配条件从 <match url="(.*)" />
更改为 <match url="^((?!testsite).)*$" />
所以基本上这将适用于所有 URLS,但包含 testsite 的除外。
希望对您有所帮助。
我的 "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" />
我做错了什么?
您不需要为此制定单独的规则。
- 打开 IIS 管理器展开站点和 select 虚拟目录。
- 在中央窗格中,您可以看到所有模块。双击 URL 重写。
- Select 重定向规则并在操作窗格中单击禁用规则。
您也可以在虚拟目录中添加 web.config 并执行以下操作
<system.webServer>
<rewrite>
<rules>
<remove name="testsite no https" />
</rules>
</rewrite>
</system.webServer>
或
将您的匹配条件从 <match url="(.*)" />
更改为 <match url="^((?!testsite).)*$" />
所以基本上这将适用于所有 URLS,但包含 testsite 的除外。
希望对您有所帮助。