IIS 7.5 SSL 重定向

IIS 7.5 SSL 重定向

我有一个标准网站托管在我完全控制的服务器上 - 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>

答案1

我最终自己解决了这个问题——我结合了两种不同的规则(一种是重写http://域名.comhttps://www.domain.com证书链接到的位置)以及另一个重定向所有 HTTPS 请求,这似乎运行正常。以下是相关的配置条目:

   <rewrite>
        <rules>
            <rule name="CanonicalHostNameRule1">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^www\.domain\.com$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://www.domain.com/{R:1}" />
            </rule>
            <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>

答案2

我知道如果你在 IIS 中配置重定向,你可以带走整个 URL,如果你使用属性appendUrlTrail="true"。也许你可以将其附加到标签。我不确定它是否有效 :-)

相关内容