我在我完全控制的服务器上托管了一个标准网站 - www.domain.com。我最近为此域购买了 SSL 证书,准备接受信用卡,并希望将所有请求重定向到https://www.domain.com。在大多数情况下,我创建的规则(见下文)工作正常 - 如果我输入http://www.domain.com它将重定向到https://www.domain.com。我遇到的问题是,如果我转到内部链接,例如http://www.domain.com/folder/page.aspx,我会收到 404,因为唯一的绑定关系是 HTTPS。我如何制定重定向规则,表明对 www.domain.com 的任何请求都发送到 HTTPS,但保留请求的原始文件夹/页面结构?所以,去http://www.domain.com/folder/page.aspx将我发送到https://www.domain.com/folder/page.aspx。我希望查询字符串值也保持不变。
这是我当前的重写规则:
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
我最终自己解决了这个问题——我结合了两种不同的规则(一种是将http://domain.com重写为证书链接到的https://www.domain.com),另一种只是重定向所有 HTTPS 请求,它似乎工作正常。这是相关的配置条目:
我知道如果您在 IIS 中配置重定向,如果您使用属性appendUrlTrail="true" ,您可以带走整个 URL 。也许你可以将它附加到标签。我不确定它是否有效:-)