对仅影响移动设备的重定向循环进行故障排除

Troubleshoot Redirect Loop affecting only Mobile Devices

我正在使用 IIS10 和 URL-Rewrite,出于某种原因,我的网站有一个 redirect-loop,但仅限于移动设备。无论是哪个移动设备、连接的网络或我清除缓存多少次,该网站都不会在任何移动设备的任何浏览器上加载。我已经使用 iphone、android、chrome、firefox、safari 进行了测试,它们都是一样的。

这是我在 web.config

中的规则
<rewrite>
      <rules>
        <rule name="CanonicalHostNameRule1">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{HTTP_HOST}" pattern="^example\.com$" negate="true" />
            <add input="{HTTP_HOST}" pattern="^(.*)\.example\.com$" negate="true" />
          </conditions>
          <action type="Redirect" url="http://example.com/{R:1}" />
        </rule>
        <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>

我在同一台机器上托管了其他网站,它们具有类似的 URL 重写规则,工作正常没问题。

即使我的所有规则都关闭了,我仍然在移动设备上遇到重定向循环。

任何工具,tips/tricks 如何解决此问题,我们将不胜感激!


更新:来自 Fiddler 的信息

RAW:

HTTP/1.1 301 Moved Permanently
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: http://example.com/
X-Redirect-Reason: Wrong Portal Alias Requested
Set-Cookie: dnn_IsMobile=True; path=/; HttpOnly
Set-Cookie: language=en-US; path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Date: Thu, 29 Oct 2020 13:19:56 GMT
Content-Length: 142

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://example.com/">here</a>.</h2>
</body></html>

Headers:

**Response Headers**
HTTP/1.1 301 Moved Permanently
**Cache**
Cache-Control: private
Date: Thu, 29 Oct 2020 13:19:56 GMT
**Cookies/Login**
Set-Cookie: dnn_IsMobile=True; path=/; HttpOnly
Set-Cookie: language=en-US; path=/; HttpOnly
**Entity**
Content-Length: 142
Content-Type: text/html; charset=utf-8
**Miscellaneous**
X-Redirect-Reason: Wrong Portal Alias Requested
**Security**
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
**Transport**
Location: http://example.com/

我看到 Wrong Portal Alias Requested 但不确定是什么原因造成的?

感谢 LexLi,他让我找到了正确的方向。 Fiddler 帮了大忙。

是的,该网站是在 DNN CMS 应用程序上构建的,问题是在 DNN 中有一个 table portalsettings 有一个名为 DefaultPortalAlias 的设置有一个错误此设置中的值。

此外,在 DNN 的 PortalAlias table 中,IsPrimarybit 个字段,在我的例子中 IsPrimary 设置为 www. 版本的别名不是 non-www. 并且在 IIS 中我的 url 重写规范规则指向 non-www. 绑定,这就是导致循环的原因。我不确定为什么它只影响移动设备,但在这些更改后它现在可以正常工作了。

感谢@Lex Li 的见解!