You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URL重写后301重定向失效,出现重定向循环问题求助

解决Apache重定向循环(301过多)问题

兄弟,你这明显是掉进重定向循环的坑里啦!咱们先拆解下问题根源:
你先设置了RewriteRule ^solar-solutions-in-india.php?$ solution.php [L],把新URL内部重写到旧的solution.php;紧接着又用Redirect 301 /solution.php https://www.abc.or/solar-solutions-in-india.php,把旧URL跳回新URL——这不就来回兜圈子了嘛,浏览器肯定会报重定向过多的错误。

正确的解决方案:用mod_rewrite条件区分请求来源

咱们需要只对用户直接访问旧URL的情况做301重定向,内部重写的请求跳过这个规则,就能避免循环。把你原来的规则替换成下面的代码:

# 仅对用户直接请求solution.php的情况做301重定向
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /solution\.php\ HTTP/
RewriteRule ^solution\.php$ https://www.abc.or/solar-solutions-in-india.php [R=301,L]

# 新URL的内部重写规则保持不变
RewriteRule ^solar-solutions-in-india\.php?$ solution.php [L]

为什么这样能解决问题?

%{THE_REQUEST}变量记录的是用户实际发送的HTTP请求行(比如GET /solution.php HTTP/1.1),只有当用户直接访问旧URL时才会匹配这个条件;而内部重写的请求(也就是从新URL转成旧URL的过程)不会触发这个条件,完美避开了循环。

测试前的注意事项

  • 确保你的Apache已经启用了mod_rewrite模块
  • 把规则放在站点根目录的.htaccess文件里,或者对应的虚拟主机配置中
  • 一定要清除浏览器缓存后再测试!因为301重定向会被浏览器缓存,之前的错误缓存可能干扰测试结果

内容的提问来源于stack exchange,提问作者Siddhart hundare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:22:49