IIS中的URL重写和错误“页面无法正确重定向”

时间:2018-07-31 09:19:34

标签: asp.net iis-7

我尝试像下面这样重写url

mail.test.com必须重定向到https。除了test以外,http也可以。

<match url="(.*)" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="^mail\.test\.com$" />
    </conditions>
<action type="Redirect"  url="https://mail.test.com/{R:1}" />

但是我得到一个错误:

  

页面重定向不正确

     

连接到mail.test.com时发生错误。

     

有时可能是由于禁用或拒绝接受Cookie引起的。

SSL证书和其他证书都可以。如果我不编写此规则,则它适用于https,但其他规则也会重定向到https。我在这里想念什么?

2 个答案:

答案 0 :(得分:1)

请尝试以下操作。当我对链接到IIS中单个网站的不同域进行快速测试时,它起作用了。

<rule name="HTTP to HTTPS" stopProcessing="true">
   <match url="(.*)" />
   <conditions logicalGrouping="MatchAll">
      <add input="{HTTP_HOST}" pattern="^(mail\.test\.com)$" />
      <add input="{HTTPS}" pattern="off" />
   </conditions>
   <action type="Redirect" url="https://mail.test.com/{R:1}" />
</rule>

使用重定向规则时,最好在每次更改后清除浏览器缓存。否则,浏览器将使用来自缓存的旧重定向。大部分浏览器缓存数据都可以通过 Ctrl + Shift + Del 清除。

答案 1 :(得分:0)

请尝试这样。

<rewrite>
   <rules>
      <clear />
      <rule name="Redirect to https" stopProcessing="true">
         <match url=".*" />
         <conditions>
            <add input="{HTTPS}" pattern="mail\.test\.com$" />
         </conditions>
         <action type="Redirect" url="https://mail.test.com/{R:1}" />
      </rule>
   </rules>
</rewrite>  

注意:请使用chrome:// net-internals清除缓存