2012-01-17 58 views
13

我有一个web.config文件,可以自动发送流量到HTTPS。但是,如果有人在MyDomain.com进入,然后它会去https://mydomain.com如果有人进入www.mydomain.com那么它会去https://www.mydomain.comWeb.config。将所有流量重定向到www.my ...使用规则元素。

我希望所有的交通去https://www.mydomain.com。这可能使用web.config的rules元素吗?我的文件目前看起来是这样的:

<rewrite> 
    <rules> 
     <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
      </conditions> 
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" /> 
     </rule> 
    </rules> 

+0

有人吗?或者,关于如何使用IIS GUI的建议也会很好。 – Paul 2012-01-17 12:06:19

回答

23

的规则

<rule name="Redirect to www subdomain"> 

    <match url=".*" /> 

    <conditions logicalGrouping="MatchAll"> 
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" /> 
    <add input="{SERVER_PROTOCOL}" pattern="^(.*)(/.*)?$"/> 
    </conditions> 

    <action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/> 

</rule> 

规则的说明

  • <match />限制的规则,只要求其路径和查询字符串匹配给定的模式。在我们的案例中,我们希望匹配所有路径和查询字符串,因为我们将基于域进行重定向。

  • <conditions />进一步限制的规则,只是满足给定条件匹配的请求。第一个条件排除域名已经以“www”开头的请求。第二个条件就是{C:1}反向引用,它不应该过滤任何东西。

  • <action>预规划 “WWW”。到域,然后重定向。

变量

  • {R:0}是反向引用从<match \>标签全场比赛。反向引用应该只包含路径和查询字符串,因为这是所有<match \>匹配的。

  • {C:1}是从最后状态到第一匹配组反向引用。这应该包含一切,直到{SERVER_PROTOCOL}变量中的“/”。

  • {HTTP_HOST}是包含请求域的服务器变量。 (请参阅here获取完整列表。)

  • {SERVER_PROTOCOL}另一个服务器变量。其格式应该是“{协议}/{版本号}”。

其他选项

  • <action redirectType>可以是暂时的,发现还是SeeOther。 (有关详细信息,请参阅here)。

  • <conditions logicalGrouping>可以是MatchAll或MatchAny。

结论

更完整的解释,请参阅here

+0

我们是否添加该规则或更换海报? – 2012-05-18 17:23:26

+0

非常感谢你!我会问你怎么能保持这个,重新引导像一个冠军猴子!但不重定向如果域包含ie:“bypdm.com”这些是我们用来显示客户端的临时URL,他们没有在IIS中的WWW设置? – Tim 2012-08-16 12:19:38

+3

难道你不想'redirectType =“永久”'为301重定向? – ajbeaven 2012-12-03 22:10:49

相关问题