IIS 重写规则
IIS Rewrite Rules
我发现了两个不同的重写规则来强制 IIS 托管网站使用 HTTPS。我有一个站点将托管在将使用此规则的 Azure 应用服务上。
选项 1:
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
选项 2:
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
问题:
- 在选项 1 中将 ignoreCase 设置为 false 的原因是什么?
- 选项 2 中的 REQUEST_METHOD 输入是否将安全性限制为仅 GET 和 HEAD?
- appendQueryString="true" 是否在重定向时保留查询字符串?
- 是否有任何其他选项需要考虑但不属于其中任何一个?
推荐阅读官方文档:
你可以找到它的所有属性解释。
ignoreCase – 使用此属性控制条件的模式匹配是区分大小写还是不区分大小写。
appendQueryString – 指定在替换期间是否应保留来自当前 URL 的查询字符串。默认情况下,如果未指定 AppendQueryString 标志,则假定为 TRUE。这意味着原始 URL 中的查询字符串附加到替换后的 URL.
我发现了两个不同的重写规则来强制 IIS 托管网站使用 HTTPS。我有一个站点将托管在将使用此规则的 Azure 应用服务上。
选项 1:
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
选项 2:
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
问题:
- 在选项 1 中将 ignoreCase 设置为 false 的原因是什么?
- 选项 2 中的 REQUEST_METHOD 输入是否将安全性限制为仅 GET 和 HEAD?
- appendQueryString="true" 是否在重定向时保留查询字符串?
- 是否有任何其他选项需要考虑但不属于其中任何一个?
推荐阅读官方文档:
你可以找到它的所有属性解释。
ignoreCase – 使用此属性控制条件的模式匹配是区分大小写还是不区分大小写。
appendQueryString – 指定在替换期间是否应保留来自当前 URL 的查询字符串。默认情况下,如果未指定 AppendQueryString 标志,则假定为 TRUE。这意味着原始 URL 中的查询字符串附加到替换后的 URL.