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

使用.htaccess移除utm_campaign参数时自动添加index.php的求助

解决utm_campaign参数移除后自动添加index.php的问题

你的问题核心是现有Rewrite规则和隐藏index.php的路由规则冲突,加上原规则写法未正确处理查询参数,导致跳转时触发了index.php的路径解析。试试下面的.htaccess配置:

# 优先处理utm_campaign参数移除跳转
RewriteCond %{QUERY_STRING} (^|&)utm_campaign=[^&]+(&|$) [NC]
RewriteRule ^ %{REQUEST_URI} [L,R=301,QSD]

# 保留你原本隐藏index.php的规则(注意顺序要在上面规则之后)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

关键调整说明:

  • 用%{REQUEST_URI}替代硬编码域名和$1,避免路径解析时出现错误拼接
  • QSD标记(Apache 2.4及以上版本支持)可直接丢弃所有查询参数,无需手动处理参数拼接
  • 把utm参数处理规则放在隐藏index.php规则前面,确保先完成参数移除跳转,再执行路由解析

如果你的Apache版本低于2.4,不支持QSD,可改用以下写法兼容:

# 移除utm_campaign参数,保留其他可能存在的参数
RewriteCond %{QUERY_STRING} ^(.*)(^|&)utm_campaign=[^&]+(&)(.*)$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1%4 [L,R=301]
RewriteCond %{QUERY_STRING} ^(.*)(&)utm_campaign=[^&]+$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1 [L,R=301]
RewriteCond %{QUERY_STRING} ^utm_campaign=[^&]+(&)(.*)$ [NC]
RewriteRule ^ %{REQUEST_URI}?%2 [L,R=301]
RewriteCond %{QUERY_STRING} ^utm_campaign=[^&]+$ [NC]
RewriteRule ^ %{REQUEST_URI}? [L,R=301]

# 隐藏index.php的规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

配置完成后,访问website.com/page?utm_campaign=CAMPAIGN会正确跳转到website.com/page,不会出现index.php路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:18:34