Magento HTTP跳转HTTPS时丢失gclid参数问题求助
解决Magento HTTP转HTTPS时gclid参数丢失的问题
我之前维护Magento站点时也碰到过一模一样的情况——所有HTTP请求强制跳转到HTTPS后,gclid这类追踪参数直接丢失了,但直接访问HTTPS带参数的URL却完全正常。核心问题其实就是默认的.htaccess重定向规则没把查询字符串(query string)带过去,咱们直接修改配置就能搞定。
具体操作步骤:
- 先找到Magento根目录下的
.htaccess文件,一定要先备份一份,避免改坏了没法回滚。 - 在文件里找到负责HTTP转HTTPS的规则块,默认的规则通常是这样的:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- 问题就出在规则的末尾标志上,原规则没加
QSA(Query String Append),导致重定向时不会保留原URL的查询参数。咱们把规则修改成:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
- 保存修改后的
.htaccess,然后测试访问http://example.com?gclid=Test123,应该就能正常跳转到https://example.com?gclid=Test123,参数再也不会丢失了。
补充说明:
QSA标志的作用就是告诉Apache服务器,把原URL的查询字符串追加到重定向后的URL中,这是解决这类参数丢失问题的关键。- 如果你的Magento部署在Nginx环境下,思路类似,只需要在重定向规则里加上
$args即可,但你提到用.htaccess,所以重点针对Apache环境说明。 - 注意要确保这条HTTPS跳转规则放在其他
RewriteRule的前面,避免和其他重定向规则产生冲突。
内容的提问来源于stack exchange,提问作者leokan
相关产品推荐
相关产品推荐

