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

htaccess规则中Query String匹配失效,p参数转page参数重定向失败

问题原因

你现有规则的核心错误有两点:

  • 重写目标地址属于字符串替换场景,不会解析正则表达式,你直接在目标地址里写的([0-9]+)会被当做普通字符串输出,自然不会替换成实际的参数值
  • RewriteCond里捕获的分组需要用%N(N为分组序号,从1开始)的格式引用,不能用RewriteRule的$N格式,也不能重复写正则。

修正后的规则

按你的需求只需要把目标地址里的([0-9]+)替换为引用RewriteCond捕获值的%1即可:

RewriteCond %{QUERY_STRING} ^p=([0-9]+)
RewriteRule ^[ROOT]/([0-9]+)_(.*)$ https://www.[DOMAIN].[EXT]/[ROOT]/$1-$2?page=%1 [R=301,L]

补充优化建议

  • 如果你使用的是Apache 2.4及以上版本,建议追加QSD标志,丢弃原始的p=xx查询字符串,避免跳转后地址同时出现旧参数和新参数,调整后规则如下:
RewriteCond %{QUERY_STRING} ^p=([0-9]+)
RewriteRule ^[ROOT]/([0-9]+)_(.*)$ https://www.[DOMAIN].[EXT]/[ROOT]/$1-$2?page=%1 [R=301,L,QSD]
  • 如果你需要保留除了p之外的其他原有查询参数,可以再追加QSA标志,新的page参数会和剩余的原有参数自动合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:03