0

当用户输入 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. 在匹配网址中

    请求的 URL:匹配模式

    使用:正则表达式

    图案: (。*)

    忽略大小写:选中

  2. 条件

    逻辑分组:匹配所有

    输入:{HTTPS}

    类型:匹配模式

    模式:^OFF$

    跨条件跟踪组:未选中

  3. 行动

    操作类型:重定向

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

    追加查询字符串:选中

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

请让我知道是否可以对现有设置进行任何更改。

提前致谢。

4

1 回答 1

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 发出永久重定向(= 更好)。

于 2012-05-04T11:18:40.253 回答