Webflow跳转时如何隐藏URL中的查询字符串且保留访问追踪功能?
你之前写的代码仅完成了URL字符串的切割操作,没有调用浏览器API修改地址栏的实际展示内容,因此不会生效。可参考以下三种可行方案:
方案1:保留原有重定向规则+历史记录API替换(改动最小)
- 保持你现有的Webflow 301重定向规则不变,重定向依然携带
key查询参数 - 将以下代码添加到Webflow站点全局设置的
</body>标签前自定义代码区域:
if (window.location.search.includes('key=')) { // 提取来源参数存入会话存储,供后续追踪逻辑调用 const redirectSource = new URLSearchParams(window.location.search).get('key'); sessionStorage.setItem('redirect_source', redirectSource); // 替换当前浏览器历史记录,无刷新清除地址栏查询参数 window.history.replaceState({}, document.title, window.location.pathname); }
- 后续做数据追踪时直接从
sessionStorage.getItem('redirect_source')读取来源值即可。
方案2:调整重定向规则,从源头取消带参跳转
- 修改Webflow重定向规则:旧路径
/mexico直接301跳转至example.com,不携带任何查询参数 - 在全局自定义代码中添加来源识别逻辑:
// 通过页面来源判断是否从旧路径跳转 if (document.referrer.includes('/mexico')) { sessionStorage.setItem('redirect_source', 'mexico'); } // 存在多个旧路径时可扩展多个判断分支
该方案从重定向环节就避免了参数出现在地址栏,逻辑更简洁。
方案3:前端接管跳转逻辑(适合多旧路径批量处理)
如果存在大量类似/mexico的旧路径需要处理,可不用逐条配置Webflow重定向规则:
- 关闭之前配置的单条301重定向规则
- 在Webflow全局
</head>标签前的自定义代码区域添加如下逻辑:
if (window.location.pathname === '/mexico') { sessionStorage.setItem('redirect_source', 'mexico'); // 直接跳转至主页,全程不会出现查询参数 window.location.href = '/'; } // 批量处理可将旧路径存入数组做循环判断
内容的提问来源于stack exchange,提问作者Diego Cervantes
相关产品推荐
相关产品推荐

