<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
我在web.config文件中使用了上面的url重写规则来为整个站点启用SSL。 现在我需要更改上面的规则来过滤2个应该作为http工作的URL。 我们将这些网址称为https://www.domain.com/owner/Marketing和https://www.domain.com/owner/getinfo。 目前这些网址是https因此高于规则。那么如何更改上述规则以过滤2个网址(即http://www.domain.com/owner/Marketing和http://www.domain.com/owner/getinfo)?
答案 0 :(得分:1)
我会添加一个单独的规则来排除不应重定向到https的网址。
我现在无法测试,因为手边没有IIS7。但试一试:
<rewrite>
<rules>
<rule name="Skip HTTPs" enabled="true" stopProcessing="true">
<match url="^(Marketing|getinfo)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="None" />
</rule>
<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
请注意,您必须根据示例将该文件放入/ owner /目录。
你可能已经看过这方面的文件 - 只是指出我找到它的地方:
此处可能使用前瞻性正则表达式规则重复该问题:Rewriting URLs in IIS7