IIS 7 URL重写规则似乎只运行一次

时间:2014-08-03 23:19:02

标签: iis ssl iis-7 rewrite url-rewrite-module

我正在尝试强制在IIS下运行的网站始终以https模式运行并重定向到包含www的完整根名称,以便SSL证书正常工作。

以下是web.config条目:

<system.webServer>
    <rewrite>
        <rules>
            <clear />
            <rule name="Redirect to https" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    <add input="{HTTP_HOST}" pattern="^somewebsite.com$" ignoreCase="true"  />
                </conditions>
                <action type="Redirect" redirectType="Permanent" url="https://www.{HTTP_HOST}{REQUEST_URI}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

这适用于首次请求,例如有人首次请求:浏览器URI中的somewebsite.com,它们将自动重定向到https://www.somewebsite.com。但是,一旦加载了站点并且用户手动删除浏览器URI中的www或https,服务器就不会执行后续重定向。这是设计,规则是否可以始终执行?

1 个答案:

答案 0 :(得分:1)

这是我在所有实时SSL网站上使用的内容。我使用了2条规则,从未遇到任何问题:

<rule name="Redirect domain.com to www" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="domain.com" />
    </conditions>
    <action type="Redirect" url="https://www.domain.com/{R:0}" />
</rule>
<rule name="HTTP to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>