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

如何修复.htaccess重定向中查询参数被忽略的问题?

问题原因及修复方案

你的.htaccess规则里,当访问带额外查询参数的URL时,比如shop.php?page=home&search=foo,search参数被忽略的核心原因是RewriteRule默认会用新的查询字符串替换掉原有的。

你当前的规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/(.*)$ /shop.php?page=$1 [L]

这里的[L]标记只是终止后续规则处理,但不会保留原查询参数。当原URL带有search=foo这类额外参数时,重写后只会保留你指定的page=$1,原参数会被覆盖丢弃。

要解决这个问题,只需要在RewriteRule的标记里加上QSA(Query String Append),它的作用是把原URL的查询字符串追加到新生成的查询字符串后面,这样两个参数就能共存了。

修改后的规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^shop/(.*)$ /shop.php?page=$1 [L,QSA]

这样访问类似shop/home?search=foo的URL时,就会被正确重写为shop.php?page=home&search=foo,所有参数都能保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:36