对仅影响移动设备的重定向循环进行故障排除
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 中,IsPrimary
有 bit
个字段,在我的例子中 IsPrimary
设置为 www.
版本的别名不是 non-www.
并且在 IIS 中我的 url 重写规范规则指向 non-www.
绑定,这就是导致循环的原因。我不确定为什么它只影响移动设备,但在这些更改后它现在可以正常工作了。
感谢@Lex Li 的见解!
我正在使用 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 中,IsPrimary
有 bit
个字段,在我的例子中 IsPrimary
设置为 www.
版本的别名不是 non-www.
并且在 IIS 中我的 url 重写规范规则指向 non-www.
绑定,这就是导致循环的原因。我不确定为什么它只影响移动设备,但在这些更改后它现在可以正常工作了。
感谢@Lex Li 的见解!