2012-05-03 128 views
0

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

我有以下添加在我的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

    请求的网址:匹配模式

    使用:Reqular Expre裂变

    模式:(。*)

    忽略大小写:经过

  2. 条件

    逻辑分组:匹配所有

    输入:{HTTPS}

    类型:火柴图案

    帕特RN:^ OFF $

    跨越条件轨道组:未选中

  3. 行动

    动作类型:重定向

    重定向的URL:https:// {HTTP_HOST}/{R 1}

    追加查询字符串:检查

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

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

在此先感谢。

+0

如果我输入URL作为www.domain.com它工作正常,因为它正确地重定向到https://www.domain.com。但是,如果我以domain.com的身份输入URL,则会显示错误页面为“连接不可信”。这是因为iam使用https。 – shakti

回答

3

您的重写规则只是重定向到相同的域。所以如果用户只输入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的主机头。如果没有,它会发出永久重定向(= beter)到同一个URL。