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

如何通过htaccess配置301重定向index.php?p=到product.php?id=

原规则不生效的原因

RewriteRule 默认仅匹配请求的路径部分,不会匹配?之后的查询字符串内容,因此你直接在RewriteRule里写p\=的匹配逻辑无法命中目标请求,规则自然不会生效。

正确配置

RewriteEngine on
RewriteBase /

# 匹配 index.php?p=数字 或者 /?p=数字 的请求
RewriteCond %{QUERY_STRING} ^p=([0-9]+)$
RewriteRule ^(index\.php)?$ product.php?id=%1 [R=301,L]

规则说明

  • 先用RewriteCond检查请求的查询字符串是否完全符合p=数字的格式,捕获到的数字会存入变量%1
  • 再匹配请求路径为根目录(空路径)或者index.php的场景
  • 跳转时自动将捕获的数字赋值给product.php的id参数,末尾的L标记表示命中当前规则后停止处理后续重写规则
  • 配置修改完成后需要清空浏览器缓存再测试,301重定向会被浏览器持久化缓存,未清缓存的情况下旧规则可能还会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:36:00