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

网站重建后.htaccess出现重定向循环问题排查

嘿,这个重定向循环的问题出在你用的Redirect 301 /es ...规则的匹配逻辑上!

mod_alias的Redirect指令是前缀匹配的——也就是说,只要请求的URL路径以/es开头,就会触发这个重定向。举个实际的执行流程:

  • 当你访问/es时,会被重定向到/es/inicio
  • 但新的请求/es/inicio同样是以/es开头的,所以又会被这条规则匹配,重定向到/es/inicio/inicio
  • 接着/es/inicio/inicio还是符合前缀要求,继续重定向到/es/inicio/inicio/inicio……就这样陷入了无限循环!

解决办法

你需要把这个前缀匹配的重定向改成精确匹配——也就是只让/es(或者带结尾斜杠的/es/)这个精准请求触发重定向,而不是所有以/es开头的路径。

推荐统一用mod_rewrite来实现所有重定向(避免mod_alias和mod_rewrite的处理顺序冲突),修改后的.htaccess配置如下:

RewriteEngine On

# 精确匹配 /es 或 /es/,重定向到新首页
RewriteRule ^/?es/?$ /es/inicio [R=301,L]

# 处理旧页面的重定向(替换原来的Redirect规则)
RewriteRule ^/?es/node/64$ /es/vacaciones-y-actividades/actividades-locales [R=301,L]

# 隐藏.php后缀的规则保持不变
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

关键细节说明

  • ^/?es/?$这个正则表达式精确匹配两种请求:/es和/es/,不会影响任何以/es开头的子路径(比如/es/inicio)。
  • [R=301,L]里的L标记表示这是最后一条执行的规则,匹配后就停止处理后续规则,避免不必要的干扰。

这样修改后,访问/es会被正确重定向到/es/inicio,而/es/inicio会被后续规则自动加上.php后缀,正常访问到/es/inicio.php,彻底解决循环问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:54:17