【发布时间】:2015-08-12 13:24:09
【问题描述】:
我已经阅读了一些关于 SO 和 'net 的帖子(IIS 博客等)。我正在尝试强制从 domain.com 到 www.domain.com 的所有连接,同时强制从 HTTP 到 HTTPS 的请求。
我正在使用这组规则并进行了重写,但唯一发生的事情是它重定向正常,但没有重定向到 SSL。
<!-- Redirect to HTTPS -->
<rewrite>
<rules>
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^mydomain.com$" ignoreCase="true" negate="false" />
</conditions>
<action type="Redirect" url="{MapProtocol:{HTTPS}}://www.mydomain.com/{R:1}" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="MapProtocol" defaultValue="http">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>
我做错了什么?
主要博客参考:http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action 和这篇 SO 帖子 - web.config redirect non-www to www
【问题讨论】:
-
除了配置错误外,别忘了在 Chrome 的隐身窗口中进行实验,否则您的 301 重定向将被缓存。每次尝试新的隐身窗口时,您都需要关闭并启动一个新的隐身窗口。