如何解决自定义GitHub Pages域名下的ERR_TOO_MANY_REDIRECTS错误?
解决CloudFlare + GitHub Pages 出现的
ERR_TOO_MANY_REDIRECTS错误 这种重定向循环问题在CloudFlare配合GitHub Pages时很常见,大多是SSL配置、重定向规则或两端服务的设置冲突导致的,我来帮你一步步排查解决:
1. 先确认GitHub Pages的HTTPS设置
- 打开你的GitHub仓库,进入Settings > Pages页面,找到「Enforce HTTPS」选项:
- 如果你之前尝试开启但没成功,现在请确保这个选项是关闭的——因为我们现在用CloudFlare来处理HTTPS,GitHub自带的HTTPS强制会和CloudFlare的代理逻辑冲突,引发循环。
- 同时确认自定义域名的状态显示正常,没有拼写错误或验证失败的提示。
2. 调整CloudFlare的SSL/TLS模式
这是最容易踩坑的地方,登录CloudFlare后台,进入你的域名管理面板:
- 切换到SSL/TLS > Overview页面,选择正确的模式:
- 如果你的GitHub Pages目前只能通过HTTP访问(之前HTTPS配置失败),选Flexible模式(CloudFlare给用户提供HTTPS,后端以HTTP请求转发给GitHub);
- 如果你的GitHub Pages已经能正常提供HTTPS(即使之前有问题,现在可以再验证下
https://yourusername.github.io是否能正常访问),选Full模式; - 绝对不要选Strict模式——这个模式要求源站(GitHub Pages)必须有受信任的SSL证书,如果你之前的HTTPS配置没完成,会直接导致重定向循环或证书错误。
3. 检查CloudFlare的重定向规则和页面规则
- 先看SSL/TLS > Edge Certificates里的「Always Use HTTPS」选项:如果已经开启这个选项,就不要再额外添加强制HTTPS的页面规则,否则会重复触发重定向。
- 进入Rules > Page Rules,检查有没有设置双向重定向(比如同时设置
www.yourdomain.com跳转到非www,又反过来设置非www跳转到www),这种双向规则会直接导致循环。只保留单向规则即可(比如只把非www重定向到www)。 - 删掉所有不必要的重定向规则,只保留核心的(比如强制HTTPS、单域名跳转)。
4. 验证DNS记录的正确性
- 进入CloudFlare的DNS > Records页面:
- 确保所有指向GitHub Pages的记录(A记录或CNAME记录)的橙色云朵图标是开启的——也就是让CloudFlare代理所有请求,不要有部分记录是灰色(直接解析)的情况,混合代理模式会引发重定向异常。
- A记录要指向GitHub官方提供的IP:
185.199.108.153、185.199.109.153、185.199.110.153、185.199.111.153;CNAME记录要指向你的yourusername.github.io,不要写错。
5. 清除缓存(关键步骤)
重定向问题很多时候是缓存残留导致的:
- 先清除浏览器的缓存和Cookie,用隐身模式重新访问你的域名;
- 在CloudFlare后台,进入Cache > Configuration,点击「Purge Everything」清除所有缓存,确保旧的重定向规则完全失效。
6. 排查重定向链(可选)
如果还是有问题,可以用命令行工具查看具体的重定向过程:
curl -v https://yourdomain.com
从输出里你能看到请求是如何跳转的——比如如果出现「HTTPS → HTTP → HTTPS」的循环,那就是CloudFlare的SSL模式和GitHub的HTTPS强制设置冲突了,回到第一步调整即可。
内容的提问来源于stack exchange,提问作者Ryan Mcguinn




