IIS7 URL重写模块规则帮助

时间:2011-07-27 02:27:58

标签: iis mod-rewrite iis-7 url-rewriting

当有人点击我网站的根目录时,我正试图关闭HTTPS ...

我想要

https://www.domain.com/ 

重定向到

http://www.domain.com/

但我也想要..

https://www.domain.com/secure.aspx

或任何其他不重定向的命名页面。

这是我迄今为止所拥有的,但我无法让它发挥作用。我尝试了一千种方法,并阅读了所有关于此的IIS文档和示例,但我无法想出神奇的公式。

<rule name="Redirect Root Only to Non HTTP" stopProcessing="true"> 
   <match url="\.com/$" /> 
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
      <add input="{HTTPS}" pattern="on" />
   </conditions>
   <action type="Redirect" url="http://www.domain.com" appendQueryString="false" redirectType="Found" />
</rule> 

2 个答案:

答案 0 :(得分:1)

我认为这是你的答案:

<rule name="Redirect to HTTPS" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{URL}" pattern="^.*\.aspx$" ignoreCase="true" />
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
<rule name="Redirect to HTTP" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{URL}" pattern="^$" />
    <add input="{HTTPS}" pattern="^ON$" />
  </conditions>
  <action type="Redirect" url="http://{HTTP_HOST}/" redirectType="Permanent" />
</rule>

答案 1 :(得分:0)

你很接近..除了实际模式(仅匹配URL路径部分而不匹配域名)。正确的模式是^$,这意味着空字符串将仅匹配域根命中,例如https://www.domain.com/

完整规则将是:

<rule name="Redirect Root to HTTP" stopProcessing="true">
    <match url="^$"/>
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="on"/>
    </conditions>
    <action type="Redirect" url="http://www.domain.com/" redirectType="Permanent"/>
</rule>