.htaccess配置引发图片Too Many Redirects错误求助
解决.htaccess伪静态下图片重定向过多(Too Many Redirects)的问题
Hey,我看你现在遇到的问题是配置了.htaccess的重定向规则后,页面能正常访问但图片报“Too Many Redirects”,这大概率是规则顺序和条件冲突导致的循环跳转,咱们一步步来解决:
问题根源分析
你当前的规则先处理非www转www(直接跳HTTPS),然后又检查HTTPS是否开启,这就可能导致重复触发重定向——比如一个非www的HTTP请求,第一条规则跳去https://www...,但第二条规则又因为某种原因(比如服务器反向代理的X-Forwarded-Proto头没正确传递)再次判断为非HTTPS,就会无限循环跳转。另外如果图片用了硬编码的非www/HTTP地址,也会被反复重定向。
修正后的.htaccess配置
把规则顺序调整一下,先统一转HTTPS,再处理www跳转,这样每一步只做一次重定向,避免循环:
# 启用重写引擎 RewriteEngine On # 第一步:将所有HTTP流量强制转HTTPS(兼容反向代理/CDN场景) RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 第二步:将非www域名强制转www(仅在HTTPS已生效后) RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 这里添加你的伪静态规则(比如文章详情页、列表页的重写) # 示例:RewriteRule ^article/(\d+)$ article.php?id=$1 [L]
关键细节说明
[L]标志非常重要:它告诉服务器执行完当前规则后就停止后续规则,避免同一请求被多次重定向处理。- 关于
X-Forwarded-Proto:如果你用了Cloudflare这类CDN或者反向代理,服务器本身可能会收到HTTP请求(因为CDN已经做了HTTPS终止),这时候需要用这个头来判断用户实际发起的是HTTP还是HTTPS请求。如果没有用CDN/反向代理,可以去掉这个条件,只保留%{HTTPS} off。
图片加载失败的额外排查点
- 检查图片URL:如果图片是硬编码的
http://example.com/xxx.jpg或者http://www.example.com/xxx.jpg,改成相对路径(比如/xxx.jpg)或者统一用https://www.example.com/xxx.jpg的绝对路径,避免触发不必要的重定向。 - 清除浏览器缓存:301重定向是会被浏览器缓存的,之前错误的规则可能已经被缓存,用隐私模式打开页面测试,或者手动清除缓存。
- SSL证书验证:确保你的SSL证书同时覆盖
example.com和www.example.com两个域名,证书不匹配也可能导致跳转异常。
内容的提问来源于stack exchange,提问作者click_twice
相关产品推荐
相关产品推荐

