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

如何将.htaccess中多条RewriteRule指令合并为单条规则

合并RewriteRule的实现方案

完全可以合并为单条规则,以下是和原有逻辑完全兼容的写法:

RewriteRule ^work/([a-zA-Z0-9-]*)(?:/([a-zA-Z0-9-]*))?(?:/([a-zA-Z0-9-]*))?(?:/([a-zA-Z0-9-]*))?(?:/([a-zA-Z0-9-]*))?\.html$ work.php?go=$1&sub=$2&pid=$3&pad=$4&id=$5 [L]

说明:

  • 修正了原正则中[a-zA-z]的笔误:A-z会匹配到[\]^_等非字母字符,改为[a-zA-Z]更严谨
  • 所有后续路径段都用非捕获可选分组(?:/([a-zA-Z0-9-]*))?声明,匹配1到5层路径的效果和原有5条规则完全一致
  • 未匹配到的参数会自动赋值为空字符串,和原有规则的行为差异极小,PHP侧几乎不需要调整代码,如果要严格避免空参数出现在查询字符串中,可以配合RewriteCond做判空处理,普通场景直接用上述规则即可

更高扩展性的可选方案:

如果后续可能新增路径层级,建议用路径拆分方案,重写规则只需写:

RewriteRule ^work/(.*)\.html$ work.php?path=$1 [L]

在PHP代码中通过explode('/', $_GET['path'])将路径拆分为数组,再按顺序赋值给go/sub/pid等变量即可,后续新增层级不需要修改重写规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:57:03