IIS 7.5 URL特定模式的重定向

时间:2012-05-03 09:13:49

标签: iis url-rewriting iis-7.5

当用户输入domain.com时,它应该重定向到我的应用程序https://www.domain.com。目前它没有发生,它显示一个页面“此连接不受信任”。

我在web.config中添加了以下重写标记:

        <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}" redirectType="SeeOther" />
            </rule>
       </rules>
    </rewrite>

目前在我的IIS 7.5中我添加了入站规则,我有如下设置:

  1. 在匹配网址

    请求的网址:匹配模式

    使用:Reqular Expression

    模式:(。*)

    忽略案例:已检查

  2. 条件

    逻辑分组:全部匹配

    输入:{HTTPS}

    类型:匹配模式

    模式:^ OFF $

    跨越条件跟踪组:未选中

  3. 动作

    操作类型:重定向

    重定向网址:https:// {HTTP_HOST} / {R:1}

    追加查询字符串:已选中

    重定向类型:请参阅其他(303)

  4. 如果可以对现有设置进行任何更改,请与我们联系。

    提前致谢。

1 个答案:

答案 0 :(得分:4)

您的重写规则只是重定向到同一个域。因此,如果用户只输入domain.com(默认为http),则会重定向到https://domain.com。如果您的SSL证书不包含domain.com但仅包含www.domain.com,则会导致浏览器提示有关错误证书的警告。虽然现在大多数证书颁发机构都会发布带有和不带www的域的证书(但可能不是你的)。

如果您希望用户始终使用https://www.domain.com(始终使用www),则应使用以下重写规则:

<rule name="Force HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" negate="true" pattern="^ON$" />
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
    </conditions>
    <action type="Redirect" url="https://www.domain.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>

它将强制使用SSL并强制www.domain.com作为主机标头。如果没有,它将向同一URL发出永久重定向(= beter)。