如何通过.htaccess重写新增带参数URL映射并保留原有规则
你可以直接在原有规则基础上新增一条优先级更高的重写规则即可,完整配置如下:
RewriteEngine On Options +FollowSymLinks # 新增带param参数的映射规则 RewriteRule ^project/app/([^/]+)/script.json$ /project/app/script.php?blah=$1 [L,QSA] # 原有规则保留不变 RewriteRule ^project/app/script.json$ /project/app/script.php [L]
规则说明:
([^/]+)是正则捕获组,会匹配/project/app/与/script.json之间的所有非斜杠字符,也就是你需要传入的param参数值- 替换路径中的
$1会自动代入捕获到的param值,拼接到blah参数后 QSA标志用于兼容额外查询参数,例如访问/project/app/xxx/script.json?uid=123时,PHP可以同时获取到blah=xxx和uid=123两个参数,不需要该能力可以删除这个标志- 新增规则必须放在原有规则之前,避免优先级问题导致匹配失败
如果你的.htaccess文件是放在/project/app/目录下,还可以简化为以下配置:
RewriteEngine On Options +FollowSymLinks RewriteRule ^([^/]+)/script.json$ script.php?blah=$1 [L,QSA] RewriteRule ^script.json$ script.php [L]
内容的提问来源于stack exchange,提问作者donohoe
相关产品推荐
相关产品推荐

