我的网站出现too many redirects错误,请求分析重定向规则问题
过多重定向问题分析与解决
问题原因
- 协议跳转冲突:第一条规则强制所有HTTP请求转向HTTPS,但后续的域名/路径重定向都使用
http://协议。比如访问https://bigliettino.it时,会触发最后一条规则跳转到http://bigliettino.it/network-nuovo,随即又被第一条规则强制转回HTTPS,形成无限循环。 - 条件逻辑矛盾:针对
bigliettino.it的规则中,同时设置了%{http_host} !^bigliettino.it(主机名不是bigliettino.it)和%{http_host} ^bigliettino.it(主机名是bigliettino.it)两个互斥条件,导致这条规则完全无法触发,若实际业务需要该规则生效,会引发异常跳转逻辑。
解决方法
修正重定向规则,统一协议为HTTPS,调整规则顺序并修复逻辑矛盾:
修正后的完整规则
# 1. 处理www.eccoci.online.it域名跳转(HTTPS) RewriteCond %{HTTP_HOST} ^www.eccoci.online.it [NC] RewriteRule ^(.*)$ https://eccoci.online/$1 [R=301,NC,L] # 2. 处理bigliettino.it的路径跳转(HTTPS) RewriteCond %{HTTP_HOST} ^bigliettino.it [NC] RewriteRule ^(.*)$ https://bigliettino.it/network-nuovo [R=301,L] # 3. 强制所有请求使用HTTPS RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] Header set Access-Control-Allow-Origin *
关键修正点
- 统一协议:所有重定向目标改用
https://,彻底避免协议来回切换导致的循环。 - 调整规则顺序:先处理域名/路径跳转,再执行HTTPS强制规则,减少不必要的跳转次数。
- 修复逻辑矛盾:删除
bigliettino.it规则中互斥的!^bigliettino.it条件,确保规则能按预期触发。
内容的提问来源于stack exchange,提问作者stefano almonte
相关产品推荐
相关产品推荐

