如何修改htaccess的RewriteRule规则跳转时保留原有GET参数
修改后的重写规则
你只需要在原有规则末尾追加QSA(Query String Append,查询字符串追加)标志即可,修改后规则如下:
RewriteRule ^([\w-]+)/?$ ../new/index.php?product=$1 [QSA]
规则说明
QSA是Apache mod_rewrite模块的内置标志,作用是自动将原请求携带的查询参数,追加到目标地址的查询参数列表末尾,模块会自动处理参数拼接的&符号,不会出现格式冲突。- 如果你需要对外暴露跳转行为(比如让用户浏览器地址栏显示新URL),可以额外增加跳转标志,例如永久301跳转可以写成
[QSA,R=301,L],其中L标志表示匹配到本条规则后不再执行后续重写规则,避免规则冲突。
效果验证
修改规则后:
- 访问
sample.com/old/123时,依然会正常重写为sample.com/new/index.php?product=123 - 访问
sample.com/old/123?type=1时,会自动重写为sample.com/new/index.php?product=123&type=1,完全符合需求。
内容的提问来源于stack exchange,提问作者Kai
相关产品推荐
相关产品推荐

