如何实现带两个参数的.htaccess URL重写?
.htaccess重写规则修复方案
你修改后的规则无法生效的原因很明确:
- 正则只定义了一个捕获分组,却引用了不存在的
$2变量 - 正则没有匹配两段路径的结构,自然无法触发对应重写
以下是能同时支持单段(如https://example.com/admin)和两段(如https://example.com/admin/profile)路径的正确规则:
RewriteEngine On # 匹配两段路径(含末尾可选斜杠) RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ index.php?key=$1&keytwo=$2 [L] # 匹配单段路径(含末尾可选斜杠) RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?key=$1 [L]
规则说明
- 优先匹配两段路径:正则
^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$会捕获两段路径内容,分别赋值给$1和$2,/?$兼容带/和不带/的两种URL格式,[L]标记确保匹配后不再执行后续规则 - 单段路径规则复用了
/?$,合并了原规则中两条重复的定义,保持原功能的同时更简洁 - 你的
index.php可以通过$_GET['key']和$_GET['keytwo']分别获取两段路径的参数值
内容的提问来源于stack exchange,提问作者StripyTiger
相关产品推荐
相关产品推荐

