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

如何编写mod_rewrite规则捕获美化URL中的查询参数?

解决.htaccess美化URL中查询参数的传递问题

嘿,这个问题其实超简单,只需要给你的Rewrite规则加上**QSA(Query String Append)**标记就能搞定!

原理说明

默认情况下,Apache的RewriteRule如果在目标URL里指定了查询参数,会直接替换掉原URL的查询字符串。而QSA标记的作用就是告诉服务器:把原URL里的查询参数追加到目标URL的查询参数后面,而不是替换掉。正好匹配你需要保留filter=filter_val这类参数的需求。

修改后的完整规则

把你现有的两条规则加上QSA标记就行:

# 处理 /v1/resource/ 及带查询参数的情况
RewriteRule ^/(v[0-9]+)/(resource)/?$ /$1/file.php?resource=$2 [NC,L,QSA]

# 处理 /v1/resource/resource_id/ 及带查询参数的情况
RewriteRule ^/(v[0-9]+)/(resource)/([A-z0-9_]+)/?$ /$1/file.php?resource=$2&resource_id=$3 [NC,L,QSA]

效果验证

  • 当访问 /v1/resource/?filter=filter_val 时,会被重写为 /v1/file.php?resource=resource&filter=filter_val
  • 当访问 /v1/resource/abc_123/?sort=desc&page=2 时,会被重写为 /v1/file.php?resource=resource&resource_id=abc_123&sort=desc&page=2

小提示

确保你的Apache服务器已经启用了mod_rewrite模块,并且你的.htaccess文件所在目录的AllowOverride配置已经开启(比如设置为AllowOverride All),这样规则才能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:53:15