RewriteEngine重写URL移除错误路径时误删查询参数求助
解决方案
你现有规则丢失查询参数、逻辑异常的核心原因有两点:
- 规则末尾追加的
?会主动清空原URL携带的查询参数,直接导致?后的动态内容全部被丢弃 - 最后一条重写规则会把所有非目录、非文件的正常请求反向重定向到带
ERROR-DST-QUERY的路径,属于冗余逻辑,会引发异常跳转
直接将原有规则替换为如下配置即可,无需硬编码任何动态参数值,可自动保留所有原始查询参数:
RewriteEngine On # 匹配路径段为ERROR-DST-QUERY的请求 RewriteCond %{REQUEST_URI} ^/ERROR-DST-QUERY/?$ [NC] # 跳转到站点根路径,自动拼接保留所有原始查询参数 RewriteRule ^ / [L,R=301,QSA,NC]
规则说明
- 配置中的
QSA(Query String Append)是核心标识,会自动将原请求中?后的所有动态参数完整拼接到跳转后的目标URL,无需单独写正则捕获参数,无论p参数值、ref对应的用户名如何动态变化,都可以完整保留 - 删除了原规则中冗余的反向重写逻辑,不会将正常访问的请求错误跳转到异常路径
测试阶段建议先将
R=301替换为R=302(临时跳转),确认跳转逻辑正常、参数完整保留后,再改回R=301做永久跳转,避免浏览器缓存错误的跳转规则干扰调试。
内容的提问来源于stack exchange,提问作者Randy Thomas
相关产品推荐
相关产品推荐

