使用 IIS7 URL 重写模块强制 HTTPS 并避免重复 URL

emz*_*ero 3 asp.net https redirect url-rewriting

我需要将每个请求强制发送到https://www.mysite.com(始终使用 https 和 www)

该站点托管在 GoDaddy 中,我需要通过 IIS7 URL 重写模块来完成。

我已经能够使用以下代码进行 HTTPS 重定向:

<system.webServer>
        <rewrite>
            <rules>
                <rule name="Canonical Host Name" stopProcessing="true">
                    <match url="(.*)" />

                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^mysite\.com$" />
                    </conditions>

                    <action type="Redirect" url="https://www.mysite.com/{R:1}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

测试用例

我猜当我在浏览器中输入 www.mysite.com 时条件不满足,所以没有重定向,页面作为 HTTP 而不是 HTTPS。

我想我只需要修改条件模式,但我几乎没有正则表达式知识,我需要尽快。

谢谢!

Sco*_*ell 5

emzero,我认为问题在于您的条件仅匹配mysite.com

<conditions>
    <add input="{HTTP_HOST}" pattern="^mysite\.com$" />
</conditions>
Run Code Online (Sandbox Code Playgroud)

请注意模式:^mysite\.com$. 这是说,在英国,传入的URL必须以开始mysite.com和结束mysite.com,这意味着www.mysite.com不会匹配。

试试这个模式,它允许一个选项www.

<conditions>
    <add input="{HTTP_HOST}" pattern="^(www\.)?mysite\.com$" />
</conditions>
Run Code Online (Sandbox Code Playgroud)

编程快乐!