在尝试将http流量重定向到https时,我发现了以下两条规则,它们似乎做了同样的事情,但它们在两个地方有很小的差异。我应该更喜欢那个吗?有什么好处吗? (表演,角落案件等)
规则1:
<rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT_SECURE}" pattern="^0$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
规则2:
<rule name="HTTP to HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
差异在输入和重定向的url中,其中一个使用{R:1}而另一个使用REQUEST_URI。
提前谢谢
答案 0 :(得分:3)
两条规则都给出了相同的结果。并且它们之间的性能没有显着差异。除了IIS,默认情况下在内核级别缓存此类规则。这意味着很可能会从HTTP内核模式驱动程序响应请求,而无法访问Web应用程序。因此,这些规则的运行速度与无法衡量差异的速度一样快。
然而,如果您想进行不必要的优化(我有时会这样做:$)请检查以下规则。
<rule name="HTTP to HTTPS Redirect" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{SERVER_PORT_SECURE}" pattern="0" ignoreCase="false" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
以下是使用此规则的不必要的预期改进;
ignoreCase="false"
)更便宜。0
{SERVER_PORT_SECURE}
比查看off
的{{1}}便宜。