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

时间:2011-02-16 14:29:17

标签: asp.net redirect https 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>

测试用例

当我在浏览器中输入www.mysite.com时,我觉得条件不满意,因此没有重定向,页面用作HTTP而不是HTTPS。

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

谢谢!

1 个答案:

答案 0 :(得分:4)

emzero,我认为问题是您的情况只与mysite.com精确匹配:

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

注意模式:^mysite\.com$。这用英语表示,传入的网址必须以mysite.com开头,并以mysite.com结尾,这意味着www.mysite.com匹配。

请尝试使用此模式,这样可以选择www.

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

快乐编程!