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

如何修改.htaccess规则将URL多余路径段转为params参数数组

解决方案

你可以通过添加递归重写规则实现不定长度路径参数转params[]数组的需求,以下是完整修改后的.htaccess配置:

# Turn rewrite engine on
Options +FollowSymlinks
RewriteEngine on

# 递归拆分额外路径段为params[]参数
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)/([a-zA-Z0-9]+)$ $1/$2/$3?params[]=$4 [QSA,N]

# 匹配控制器+动作+1个额外参数的最终规则
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?controller=$1&action=$2&params[]=$3 [QSA,L]

# 原有规则(保持兼容)
RewriteRule "^([a-zA-Z0-9]+)$" "index.php?controller=$1&action=" [QSA,L]
RewriteRule "^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$" "index.php?controller=$1&action=$2" [QSA,L]

规则说明

  • 第一条新增规则使用N(Next)标志,每次匹配到控制器/动作/路径1/路径2/.../路径N结构时,会把最后一段路径拆分添加为params[]参数,然后重新从第一条规则开始执行,直到路径只剩控制器/动作/单段参数结构
  • 第二条新增规则处理最终只剩1个额外参数的情况,直接重写到目标index.php
  • 原有规则保持不变,兼容无额外参数、只有控制器的场景
  • 所有规则保留QSA标志,会自动合并URL上自带的其他查询参数
  • 如果你的控制器、动作、参数名允许下划线、横杠等特殊字符,可以自行调整正则中的[a-zA-Z0-9]匹配范围,比如改成[a-zA-Z0-9_-]

效果验证

访问www.example.com/api/foo/bar/some/dummy/variables时,会被重写为:
www.example.com/api/index.php?controller=foo&action=bar&params[]=some&params[]=dummy&params[]=variables

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:04