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

如何在现有Apache2 rewrite规则基础上新增规则避免无限重定向

无限循环原因
  • 新增的两条规则形成闭环:访问/help/open时先被内部重写为open.php,触发跳转规则跳转到/help/submit;/help/submit又被重写回open.php,再次触发跳转,陷入无限循环
  • 规则排序逻辑错误,自定义规则和通用重写规则的优先级混乱,也会导致匹配异常
修复后的完整配置

将以下内容替换原有/var/www/html/help/.htaccess的全部规则即可:

# /var/www/html/help/.htaccess

# 自定义外部跳转:原始请求访问/open或/open.php时跳转至/help/submit,排除POST请求
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/help/(open)(\.php)?\s [NC]
RewriteRule ^ /help/submit [R=302,NE,L]

# 原有规则:外部重定向.php后缀到无后缀路径,排除POST请求
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,NE,L]

# 自定义内部重写:将/help/submit内部映射到open.php,地址栏保持不变
RewriteRule ^submit$ open.php [L,NC]

# 原有规则:内部重定向无后缀路径到对应.php文件
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
配置说明
  • 所有外部跳转规则均匹配用户发起的原始请求(通过THE_REQUEST变量判断),不会匹配服务器内部重写产生的路径,从根源避免循环触发跳转规则
  • 规则按照「外部跳转优先、自定义规则优先于通用规则」的顺序排列,避免通用规则提前匹配覆盖自定义逻辑
  • 自定义内部重写使用精确匹配规则,不会误拦截其他路径的请求

修改配置后请清空浏览器缓存再测试,避免之前的302跳转缓存影响验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:05