uWeb 中文文档 下载 App

重定向循环或异常跳转问题排查

什么是重定向循环

重定向循环发生在:URL A 被重定向到 B,B 又被重定向到 A,形成 A→B→A→B→… 的无限循环。浏览器会检测到这个循环并报错(如"网页重定向次数过多")。

常见原因

原因 1:全局重定向 URL 自身被重定向

如果你把全局重定向 URL 设为 https://xxx.pages.dev/redirect?,而 Cloudflare Pages 的 xxx.pages.dev 域名本身也在 default.redirect 里被重定向到另一个域名……循环就形成了。

解决方法:确保全局重定向的中间层域名不在 default.redirect 里。

原因 2:default.redirect 里的正则互相匹配

# 错误配置:
google.com::google.cn
google.cn::google.com

google.com 重定向到 google.cn,但 google.cn 又匹配默认规则的 google.cn 自身(不匹配 google.com),所以这组没问题。但如果:

# 危险配置:
example\.com::mirror\.example\.com
mirror\.example\.com::example\.com

这会形成循环!

解决方法:重定向规则应该是单向的。源域名 → 目标域名,目标域名不要再有回源的规则。

原因 3:资源重定向导致的循环

开启了"自定义资源重定向"后,网页中的资源请求也会被重定向。如果:

解决方法:

  1. 先关掉"自定义资源重定向",只开普通重定向测试
  2. 确认网站能正常打开后再逐步开启
  3. 检查 default.redirect 里的正则,避免资源域名也被重定向

原因 4:301/302 HTTP 重定向叠加

有些网站自己就会做 301/302 重定向(比如 http → https)。uWeb 的重定向叠加在 HTTP 重定向上可能导致意外行为。

解决方法:

排查步骤

第一步:关掉所有重定向

  1. 长按设置 → 取消勾选所有重定向相关选项
  2. 清空 default.redirect(或临时改名为 default.redirect.bak)
  3. 清空后台重启 uWeb
  4. 确认没有循环后逐步加回

第二步:逐个开启

每次只开启一个重定向层:

  1. 先开 default.redirect(普通重定向)→ 测试
  2. 再加全局重定向 URL → 测试
  3. 最后开资源重定向 → 测试

在每一步确认网站都能正常访问,一旦某一步开始循环,就知道是那一层的问题。

第三步:检查具体规则

如果是 default.redirect 导致的:

  1. 打开 default.redirect
  2. 暂时清空所有规则,只保留最必要的 1~2 条
  3. 逐步添加其他规则
  4. 找到导致循环的那一对规则

第四步:检查全局重定向中间层

如果用的是 Cloudflare Pages/Workers 作为全局重定向:

  1. 用普通浏览器打开中间层 URL
  2. 确认中间层本身不会做额外的 HTTP 重定向
  3. 确认中间层能正确代理目标 URL

重定向的"黄金法则"

  1. 单向:重定向规则永远是 A→B,不是 A→B→A
  2. 最少:default.redirect 里的规则越少越好
  3. 先关后开:改配置前先关掉旧配置,改完再开新配置
  4. 中间层域名不要进规则:全局重定向的中间层 URL 本身不要被 default.redirect 处理

下一章