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

仅首页生效的301跳转移除查询字符串实现方法(Magento2+Fastly)

适配Magento2 + Fastly环境的实现方案

方案1:.htaccess 重定向规则(适用未全量启用Fastly缓存场景)

该规则会精准匹配首页带任意查询参数的请求,不会影响其他内页、PLP页、PDP页的正常访问:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # 仅匹配首页路径
    RewriteCond %{REQUEST_URI} ^/$
    # 匹配携带任意查询字符串的请求
    RewriteCond %{QUERY_STRING} .
    # 301跳转到无查询字符串的HTTPS首页,末尾?用于丢弃原查询参数
    RewriteRule ^(.*)$ https://example.com/? [L,R=301]
</IfModule>

注意事项:

  • 需将这段规则放在Magento2默认.htaccess的重定向规则之前,避免被其他规则拦截
  • 替换代码中的example.com为站点实际域名
  • 若需保留特定首页查询参数(如广告跟踪参数),可在RewriteCond %{QUERY_STRING} .前添加排除规则即可

方案2:Fastly VCL 规则(推荐,适配全量启用Fastly的站点)

边缘层处理重定向性能远高于源站处理,不会穿透缓存请求Magento源站,操作步骤如下:

  1. 进入Magento2后台的Fastly配置面板,找到「自定义VCL」板块
  2. 新增vcl_recv阶段的VCL片段,优先级设为10(高于默认规则),填入代码:
# 匹配首页携带查询字符串的请求
if (req.url.path == "/" && req.url.qs != "") {
    error 301 "Moved Permanently";
}
  1. 再新增vcl_error阶段的VCL片段,优先级同样设为10,填入代码:
if (obj.status == 301 && req.url.path == "/") {
    set obj.http.Location = "https://example.com/";
    set obj.status = 301;
    return (deliver);
}

注意事项:替换代码中的example.com为站点实际域名,配置完成后上传VCL到Fastly并清空边缘缓存即可生效。

验证方法

配置完成后可执行命令验证规则是否生效:
curl -I https://example.com?test=123
正常返回的响应头应包含HTTP/2 301状态码和Location: https://example.com/字段;访问https://example.com/sale.html?filter=price:0-100这类PLP页时不会触发重定向,查询参数正常保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:15:02