太多的重定向重写循环

时间:2017-04-11 08:36:05

标签: redirect iis url-rewriting

要将访问者重定向到https,我在web.config中使用了此规则:

  <rewrite>
    <rules>
      <clear />
        <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>
    </rewrite>

但是当我尝试访问网站时,我得到错误(重定向太多),似乎它陷入了循环。

https://example.comhttps://www.example.com没问题。

但是这些地址会导致错误:

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:1)

如果您有无限循环的重定向。试试这个提示。

如果你还没有登录,“login.php”会重定向到“login.php”。如果你没有登录,“login.php”会重定向到“login.php”。“login.php”重定向到“login.php”,如果你还没有登录。“login.php”如果你还没有登录就会重定向到“login.php”等。

您应该只在当前页面不是“login.php”时才进行重定向;即从该页面删除该逻辑。

答案 1 :(得分:0)

我在这些规则中找到了解决方案:

    <rules>
       <clear />
         <rule name="Redirect to HTTPS" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
                <add input="{HTTPS}" pattern="OFF" ignoreCase="true" />
              </conditions>
              <action type="Redirect" url="http://example.com/{R:1}" />
            </rule>
            <rule name="Redirect to WWW" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAny">
                <add input="{HTTP_HOST}" pattern="^example\.com$" />
              </conditions>
              <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
            </rule>
        </rules>