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

PHP网站.htaccess配置301重定向后出现多余参数问题求助

解决.htaccess 301重定向带多余query参数的问题

问题根源

你遇到的问题是重定向规则执行顺序错误,或混用了mod_alias(Redirect指令)与mod_rewrite规则,导致核心URL重写规则被触发,给新URL自动附加了?page=xxx参数。

正确解决方案

将mod_rewrite的重定向规则放在核心重写规则之前,确保旧URL被匹配后直接执行301跳转,不再触发后续核心规则。修改后的.htaccess内容如下:

<IfModule mod_rewrite.c>
#Options +FollowSymlinks

RewriteEngine On

RewriteBase /

# 新增301重定向规则,放在核心规则之前
RewriteRule ^folder/old-url-london.htm$ /new-url-london/ [R=301,L,NC]

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

Options -Indexes

</IfModule>

为什么之前的方法无效

  1. 使用Redirect指令:Redirect属于mod_alias模块,执行逻辑与mod_rewrite不同。触发跳转后,新URL/new-url-london/会被mod_rewrite核心规则处理(该路径并非真实文件/目录),因此自动加上了?page=folder/old-url-london.htm参数。
  2. 重定向规则放在核心规则之后:若把RewriteRule放在核心规则后面,请求旧URL时会先满足核心规则的!-f和!-d条件,优先执行核心重写,后续重定向规则不会被触发。

注意事项

  • 测试前清除浏览器缓存,301永久重定向会被浏览器缓存,旧缓存可能导致测试结果不准确。
  • [NC]标志为可选,用于忽略URL大小写匹配,不需要可直接去掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:59