在 Cloudflare 添加新域名后,访客的浏览器可能显示 ERR_TOO_MANY_REDIRECTS 或 The page isn't redirecting properly 错误。
此错误发生在访客陷入重定向循环时。
flowchart LR accTitle: Redirect loops illustration A[Request for <code>http://</code><code>example.com</code>] --> B[Redirect to <code>https://</code><code>example.com</code>] B --> C[Redirect to <code>http://</code><code>example.com</code>] C --> B subgraph Redirect Loop B C end
此错误通常由以下原因引起:
- SSL/TLS 加密模式配置错误。
- Edge Certificates(边缘证书) 页面上的各种设置。
- 重定向规则配置错误。
您域名的 SSL/TLS 加密模式控制 Cloudflare 如何连接到源站服务器,以及如何验证源站呈现的 SSL 证书。
当您在 Cloudflare 中设置的值与源站 Web 服务器上的设置冲突时,此设置可能导致重定向循环。
如果您的域名加密模式设置为 Flexible(灵活),Cloudflare 通过 HTTP 向源站服务器发送未加密请求。
如果源站服务器自动将所有 HTTP 请求重定向到 HTTPS,将发生重定向循环。
flowchart TD accTitle: Redirect loops illustration for Flexible mode A[Request for <code>https://</code><code>example.com</code>] --> B[Encryption mode redirects to <code>http://</code><code>example.com</code>] B --> C[Origin server redirects to <code>https://</code><code>example.com</code>] C --> B subgraph Cloudflare B end subgraph Origin server C end
要解决此问题,请从源站服务器移除 HTTPS 重定向,或将 SSL/TLS 加密模式更新为 Full(完全) 或更高(需要在源站服务器上配置 SSL 证书)。
如果您的域名加密模式设置为 Full(完全) 或 Full (strict)(完全严格),Cloudflare 通过 HTTPS 向源站服务器发送加密请求。
如果源站服务器自动将所有 HTTPS 请求重定向到 HTTP,将发生重定向循环。
flowchart TD accTitle: Redirect loops illustration for Full or Full (strict) mode A[Request for <code>http://</code><code>example.com</code>] --> B[Encryption mode redirects to <code>https://</code><code>example.com</code>] B --> C[Origin server redirects to <code>http://</code><code>example.com</code>] C --> B subgraph Cloudflare B end subgraph Origin server C end
要解决此问题,请从源站服务器移除 HTTP 重定向。
如果您为域名启用了 Always Use HTTPS(始终使用 HTTPS),Cloudflare 会将应用程序中所有子域名和主机的所有 http 请求重定向到 https。
如果源站服务器自动将所有 HTTPS 请求重定向到 HTTP,将发生重定向循环。
flowchart TD accTitle: Redirect loops illustration for Always Use HTTPS A[Request for <code>http://</code><code>example.com</code>] --> B[Always Use HTTPS redirects to <code>https://</code><code>example.com</code>] B --> C[Origin server redirects to <code>http://</code><code>example.com</code>] C --> B subgraph Cloudflare B end subgraph Origin server C end
要解决此问题,请从源站服务器移除 HTTPS 重定向,或禁用 Always Use HTTPS(始终使用 HTTPS)。
如果您为域名启用了 HTTP Strict Transport Security (HSTS),Cloudflare 会指示兼容的 Web 浏览器将 http 链接转换为 https 链接。
如果源站服务器自动将所有 HTTPS 请求重定向到 HTTP,或您的域名加密模式设置为 Off(关闭),将发生重定向循环。
flowchart TD accTitle: Redirect loops illustration for HTTP Strict Transport Security A[Request for <code>https://</code><code>example.com</code>] --> B[Encryption mode redirects to <code>http://</code><code>example.com</code>] B --> C[HSTS redirects to <code>https://</code><code>example.com</code>] C --> B C --> D[Origin server redirects to <code>http://</code><code>example.com</code>] D --> C subgraph Cloudflare B C end subgraph Origin server D end
要解决此问题,请从源站服务器移除 HTTPS 重定向,并确保域名加密模式为 Flexible(灵活) 或更高。
或者,禁用 HTTP Strict Transport Security (HSTS)(HTTP 严格传输安全)。
如果 URL 重定向冲突,也可能发生重定向循环。
flowchart TD accTitle: Redirect loops illustration for redirect rules A[Request for <code>https://</code><code>a.example.com</code>] --> B[Redirect to <code>http://</code><code>b.example.com</code>] B --> C[Redirect to <code>https://</code><code>a.example.com</code>] C --> B subgraph Cloudflare B C end
要解决此问题,请检查各种重定向规则和 Page Rules,确保规则之间没有冲突。