Laravel应用(Web+API)出现随机301重定向循环问题求助
301重定向循环问题排查思路
1. 校验Laravel核心配置与反向代理信任
- 检查
.env中APP_URL是否为正确域名(无末尾斜杠),APP_ENV设为生产环境 - 确保Laravel信任Cloudflare代理IP:在
config/trustedproxy.php添加Cloudflare全量IP段,或在Forge的Nginx配置中启用realip模块,避免Laravel因获取代理IP生成错误重定向URL - 核对
config/nova.php里的domain配置,必须与APP_URL完全匹配
2. 排查Cloudflare重定向与缓存规则
- 检查Cloudflare页面规则,删除或修正误设置的强制重定向规则(比如HTTPS跳转配置冲突)
- 确认SSL/TLS模式为「严格」或「灵活」,避免证书不匹配引发隐性重定向
- 关闭Cloudflare「自动HTTPS重定向」功能,在Forge的Nginx配置中手动添加HTTPS强制跳转:
避免Cloudflare与服务器双重重定向冲突return 301 https://$host$request_uri; - 调整Cloudflare缓存规则优先级,将全应用缓存绕过规则设为最高优先级,确保生效
3. 处理客户端重定向缓存
- 针对问题路由、Nova后台及API接口,在Laravel响应头中添加:
禁止客户端缓存错误的301响应return response()->header('Cache-Control', 'no-store, no-cache, must-revalidate'); - 告知前端在
fetch或Dart客户端请求中添加cache: 'no-store'参数,避免客户端复用缓存的重定向记录
4. 检查Nginx配置细节
- 在Forge中查看站点Nginx配置,删除重复或错误的
return 301/rewrite规则 - 确认
server_name与域名完全匹配,避免因域名匹配错误触发重定向 - 查看Nginx访问日志,过滤301请求,分析
X-Forwarded-Proto、X-Forwarded-For等请求头,定位重定向发起方(Nginx或Laravel)
5. 校验Laravel与Nova路由逻辑
- 执行
php artisan route:list,排查重复路由或配置错误的redirect路由 - 禁用自定义中间件(尤其是缓存、重定向类),逐个排查是否为中间件导致的异常重定向
- 检查Nova路由是否被全局中间件篡改,导致不必要的跳转
6. 绕开Cloudflare直接测试
- 修改本地hosts文件,将域名指向EC2公网IP,直接访问服务器:
- 若直接访问正常,问题集中在Cloudflare配置或代理逻辑
- 若直接访问仍出现循环,锁定为服务器端(Laravel/Nginx)问题
内容的提问来源于stack exchange,提问作者whisust
相关产品推荐
相关产品推荐

