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

.htaccess中/category?id=2重定向到/index.php?cat=2失败求修正

问题修正方案

你的代码存在几个关键问题,导致重定向失效:

  1. RewriteRule 的匹配模式仅针对URL的路径部分,不包含查询字符串(即?后面的内容),所以你写的^category?id=$根本无法匹配目标请求。
  2. 没有正确捕获id参数的值,$1没有对应的正则捕获组,自然无法传递参数。
  3. 正则中的?是特殊字符,需要转义,但这里根本不该在RewriteRule里处理查询串。

正确的代码实现

RewriteEngine On

# 排除真实存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 匹配查询字符串中的id参数(仅数字值)
RewriteCond %{QUERY_STRING} ^id=(\d+)$
# 匹配路径为/category的请求,将id值传递给cat参数
RewriteRule ^category$ /index.php?cat=%1 [L,R=301]

关键修改说明

  • 用RewriteCond %{QUERY_STRING}专门匹配查询字符串,通过(\d+)捕获id的数字值,用%1引用这个捕获的内容(RewriteCond的捕获组用%,RewriteRule的捕获组用$)。
  • RewriteRule仅匹配路径部分^category$,确保只针对/category这个路径生效。
  • [R=301]表示永久重定向(浏览器地址栏会显示新URL),如果需要内部重写(地址栏不变,仅服务器内部跳转),可以去掉R=301,只保留[L]。
  • 确保已经开启RewriteEngine On,否则重写规则不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:49:54