const url = new URL(location.href);
url.searchParams.set('utm_source', 'wechat');
console.log(url.toString().length); // 超过 120 直接告警

把带 utm_source=wechat&utm_content=article-bottom 的链接发到群里,点开只剩域名和文章 id,两个参数都没了,后台来源报表里这条记成了直接访问。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:分享面板用的是前端自己拼的地址,拼接函数按 120 字符硬截断,参数排在 id 后面就先被砍掉。部分平台还会把 & 之后的内容当独立参数处理,复制出来再打开只剩主路径。

这次卡住的地方就在「分享链接参数截断」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。监控和日志的时间要对上,时区不一致会多绕很大一圈。

临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

处理上按这个顺序:把 utm_source 这类核心参数排到最前面;长参数改存服务端映射表 分享时只发短码;拼接后检查 length 超过 120 就报错 不要静默截断。

确认没问题再收工,从群里点开分享链接,地址栏里 utm_source 和 utm_content 都在,后台来源归到微信而不是直接访问。

作者 9823189