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

使用.htaccess为PHP实现URL重写:双参数动态URL转层级路径问题求解

.htaccess URL重写规则调整方案

正确重写规则

如果你的目标访问路径是根路径层级的example.com/12345/xyz,使用以下配置:

RewriteEngine On

# 先匹配双参数路径:/12345/xyz 或 /12345/xyz/
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9-]+)/?$ post.php?id=$1&title=$2 [L,QSA]

# 再匹配单参数路径:/12345 或 /12345/
RewriteRule ^([a-zA-Z0-9]+)/?$ post.php?id=$1 [L,QSA]

如果需要保留/post/前缀(访问路径为example.com/post/12345/xyz),修改为以下配置即可:

RewriteEngine On

# 双参数带post前缀
RewriteRule ^post/([a-zA-Z0-9]+)/([a-zA-Z0-9-]+)/?$ post.php?id=$1&title=$2 [L,QSA]

# 单参数带post前缀
RewriteRule ^post/([a-zA-Z0-9]+)/?$ post.php?id=$1 [L,QSA]

规则说明

  • 规则顺序必须先写双参数匹配,再写单参数匹配,否则短路径规则会优先触发,导致第二个参数丢失
  • 分组正则移除了/符号,避免单个分组吃掉整个路径段,实现两个参数的拆分
  • 末尾的/?$表示路径末尾的斜杠可选,兼容带/和不带/的访问场景
  • [L]标识匹配成功后不再执行后续规则,避免规则冲突
  • [QSA]标识自动保留原请求附带的额外查询参数,如有需要可以移除

验证方式

配置生效后,在post.php中可以直接通过$_GET['id']获取id值,$_GET['title']获取title值。

注意:需要确认Apache已经开启mod_rewrite模块,且站点配置中的AllowOverride设置为All,否则.htaccess规则不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:04