除了文件“/blah.txt”之外,我想将所有HTTP请求重定向到我的网站。这是我一直在尝试的基本重写规则。我试过使用{REQUEST_FILENAME}和{URL}。我尝试了几种我认为应该匹配的不同模式。
以下规则将每个请求重定向到HTTPS 包括对blah.txt的请求
<rewrite>
<rules>
<clear />
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{REQUEST_FILENAME}" matchType="Pattern" pattern="blah\.txt$" ignoreCase="true" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
答案 0 :(得分:2)
感谢布莱恩改变我的思想方向。有时我会因为认为我的解决方案基于无错代码而工作。事实上,似乎重写器中存在一个错误,使我第一次尝试编写规则失败。但是,这条规则有效:
<rewrite>
<rules>
<clear />
<rule name="Temp" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" pattern="blah\.txt$" />
</conditions>
<action type="None" />
</rule>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
将匹配规则放在另一条规则的前面并使其停止处理规则似乎有效。
答案 1 :(得分:1)
我只看到一条似乎与一切相符的规则。这里至少需要两条规则。
我对IIS重写的功能并不熟悉。所以有两个问题:
是否有“无所事事”行动?
任何包罗万象的规则都不会匹配所有请求吗?您可能需要先放置blah.txt规则。