【发布时间】:2011-02-06 05:31:17
【问题描述】:
我正在开发一个网站,该网站使用 IIS 7 的 URL 重写功能来执行从 example.com 到 www.example.com 的永久重定向,以及从类似的域名重写到“主”域名,例如从 www.examples.com 到 www.example.com。
这个重写规则 - 如下所示 - 已经有一段时间了。但是,我们最近添加了 HTTPS 支持,并注意到如果用户访问要重写为 www.example.com 的 URL 之一,则 HTTPS 将被丢弃。例如,如果用户访问https://example.com,他们会被重定向到http://www.example.com,而我们希望他们被发送到https://www.example.com。
这是感兴趣的重写规则(在 Web.config 中):
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^example\.com$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.net$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?example\.info$" />
<add input="{HTTP_HOST}" pattern="^(www\.)?examples\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
如您所见,action 元素的 url 属性直接指向 http://,所以我明白为什么 https://example.com 会重定向到 http://www.example.com。我的问题是,我该如何解决这个问题?我尝试(天真地)从 url 属性中删除 http:// 部分,但这没有用。
【问题讨论】:
-
看来只是将
HTTP://留在重定向 URL 之外会导致 IIS 7.5 使用入站请求的协议。
标签: iis-7 url-rewriting