我正在使用IIS 7的URL重写功能来执行从example.com到www.example.com的永久重定向,并将类似域名重写为“主要”域名,例如www.examples.com到www.example.com。IIS7 URL重写:如何不从重写的URL中删除HTTPS协议?
此重写规则 - 如下所示 - 现在运行良好。但是,我们最近添加了HTTPS支持,并注意到如果用户访问其中一个URL以重写为www.example.com,则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>
正如你所看到的,动作元素的URL直接属性点到http://,所以我知道为什么https://example.com被重定向到http://www.example.com。我的问题是,我该如何解决这个问题?我尝试过(天真地)从url属性中删除http://部分,但那不起作用。
看来,只是留下'HTTP跨域解决方案://'出来的重定向URL将导致IIS 7.5使用入站请求的协议。 – HABO 2012-09-12 15:13:47