接入教程2026-11-03· 12 分钟阅读

短链服务怎么设计:302 跳转、过期策略与短信点击追踪

带链接短信的下游工程:三条约束(域名可自定义、链接逐条报备、不支持动态)推导出的短链服务形态,报备状态机与filing_no硬闸,短链服务四要点(302跳转、过期策略、短码防遍历、峰值扛量),送达回执与点击统计的区别与四层漏斗,以及域名被屏蔽、落地页变更、验证码不带链接三个坑。

诺
诺正通研究院

链接报备、签名重算这些「怎么发」的问题,上一篇讲完了。这篇讲下游:链接批准之后,承载它的那套短链服务该怎么设计,点击数据从哪来。

因为域名可自定义、链接必须报备具体内容、不支持动态链接——这三条约束决定了短链服务的形态。

一、三条约束,三条推论

约束直接后果工程推论
域名支持自定义,可用短域名你可以用自己的短链域名,不必用通道方的长域名短链服务自己掌控(或用自建短链),跳转规则、过期、统计都在你手里
链接需要报备具体内容报备是逐条的,不是"我有个链接功能"就完事报备与发送必须绑定成一个流程,报备状态要落库、要可查
不支持动态链接发送时不能拼接 ?user=xxx&act=yyy活动参数必须在报备之前就固化,发送时只能用已报备的静态链接

第三条最关键:"不支持动态"意味着你不能在发送那一刻决定链接内容。

举例:双十一活动,你要给 10 万人发带个人追踪参数的链接 https://s.example.com/a?u=88231。这条路走不通——每个用户的链接都不同,每个都要报备。可行做法只有两类:

  • 一条活动链接,全员相同:https://s.example.com/double11,落地页用手机号/券码识别身份
  • 预先生成一批静态链接(比如按人群分 20 组),每组链接都提前报备,发送时按人群路由
  • 两条路的取舍是:个性化程度 vs 报备工作量。通常选第 1 条。

    二、报备驱动的发送流程

    因为链接要逐条报备,流程的主干是报备状态机,不是发送接口:

    ① 生成短链 → ② 落库(目标URL、短码、有效期)→ ③ 提交报备(签名+模板+具体链接)
    

    → ④ 审核通过 → ⑤ 纳入发送计划 → ⑥ 批量发送 → ⑦ 送达回执入库 ↓ 驳回 → 修正后重新报备(回到 ③)

    三个必须落实的工程动作:

    1. 短链与报备记录绑定

    CREATE TABLE sms_link (
    

    link_id TEXT PRIMARY KEY, short_code TEXT NOT NULL UNIQUE, -- 短域名下的短码 target_url TEXT NOT NULL, -- 报备的原始链接 template_id TEXT NOT NULL, -- 关联的报备模板 filing_no TEXT, -- 报备编号/状态 status TEXT NOT NULL, -- draft / filed / approved / rejected / sent expire_at TIMESTAMP, created_at TIMESTAMP );

    没有 filing_no 就不允许进入发送计划——这是防止"链接还没报备就发出去"的唯一硬闸。这类错误在联调期最容易发生,因为发送接口本身不会校验链接报备状态(它只校验签名和模板)。

    2. 报备周期要排在活动排期前面

    报备有审核周期,而活动上线时间是业务定的。两者必须在排期时对齐:先确认链接能报备通过,再定活动发码时间,不能反过来。实践中最常见的失误是活动前一天才提交链接报备,导致发送窗口被压掉。

    3. 每次发送记录用的是哪条链接

    发送批次 → link_id 的映射必须持久化。否则事后排查"这批用户点的是哪个链接"时,只能靠时间戳猜。

    三、短链服务的四个要点

    既然域名可自定义,短链基础设施就归你自己管:

    1. 用 302 还是 301

  • 302(临时跳转):推荐。便于统计点击、便于换目标、便于过期失效
  • 301(永久跳转):不推荐。客户端与运营商缓存会让"过期链接"继续跳转,而且点击统计不可靠
  • 2. 过期策略

    不支持动态链接的另一个含义是:链接一旦发出就无法收回。所以每个链接都要有明确的失效时间,过期返回自己的提示页(而不是 404 或跳到首页)。失效时间要与报备时提交的链接描述保持一致,避免报备内容与实际行为不符。

    3. 短码生成要防碰撞、防遍历

    自增短码(/a1、/a2)会被批量遍历,既不安全也不好看。用随机短码或哈希截断,长度按量级定(百万级链接通常 6-8 位)。

    4. 跳转层要能扛住突发

    短信是瞬时到达的:一批 10 万条发出去,点击会在几分钟内集中到达。跳转服务要按峰值设计,而不是按平均值。这和批量调用接口是同一个道理(见并发与限流的工程做法)。

    四、点击统计:送达回执 ≠ 点击

    这是个必须分清的两件事:

    来源回答的问题
    送达回执通道返回短信有没有到用户手机上
    点击统计你的落地页/跳转服务用户有没有点开链接

    通道提供的是送达回执(我们这条通道支持实时状态回调)。点击统计必须自己在跳转层或落地页做——用短链的跳转记录,或落地页埋 UTM。

    顺带一个容易踩的误区:只看送达回执就报"效果不错"。送达只说明短信到了手机,没点开的短信等于零触达。评估营销短信要看漏斗:

    发送 → 送达 → 点击 → 落地页转化

    每一层的丢失原因不同(内容被拦截、链接没报备通过、落地页太慢),把四层数据分开看,才能定位问题在哪一环。营销短信的内容与投诉风险见营销短信合规指南。

    五、三个真实会遇到的坑

    1. 短链域名被拦截或屏蔽

    运营商与终端安全软件会识别短链域名。域名要稳定、要有备案、不要频繁更换——一旦某个域名被标记,换域名意味着之前报备过的链接全部作废,重新报备一轮。

    2. 报备的是链接,审核看的是内容

    链接的落地页内容必须与报备时描述一致。活动落地页临时改成别的内容(比如从活动页换成促销页),可能被判定为与报备内容不一致。落地页改动要走和报备同样的流程管理,不能"页面随时改,链接不变"。

    3. 验证码场景不建议带链接

    验证码短信的用户心智是"快速拿到数字",带链接会分散注意力并拉低通过率;而且验证码内容与链接的模板是两套报备。真需要引导,用落地页的自然入口更合适——验证码本身的发送与防刷见短信验证码防刷实战。

    六、上线检查单

    □ 短链域名已备案、稳定,计划长期使用
    

    □ 短链服务用 302,带过期时间与自定义失效页 □ 短码随机生成,防碰撞防遍历 □ link 表有 filing_no 字段,未报备通过的链接无法进入发送计划 □ 报备提交的是"签名+模板+具体链接",链接与模板绑定 □ 活动排期先定报备完成时间,再定发码时间 □ 落地页内容与报备描述一致,改动走同样流程 □ 每批发送记录 link_id,可回溯 □ 漏斗分层统计:发送/送达/点击/转化 分开看 □ 验证码短信默认不带链接

    相关阅读

  • 短信带链接怎么发:链接报备、签名重算与动态链接边界:上游的报备与签名问题看这篇
  • 短信验证码接口:三网合一、可带链接、变量短信、实时状态回执
  • 短信签名模板报备流程:签名规则、模板规范、5 类常见驳回
  • 消息通知接口接入指南:签名规则、模板报备与发送频率控制
  • 营销短信合规指南:什么能发、什么不能发、怎么避免被投诉
  • 批量实名核验怎么并发:分片并发与限流的工程做法
  • 短信通道按条计费,签名与模板(含链接)需报备,具体配额与价格与商务确认;新用户有免费试用额度可用于联调。
    #短链服务#短信带链接#点击统计#模板报备#工程设计

    看完想立刻接入?

    100 次免费调用,1 个工作日开通

    限时新用户 100 次免费

    1 个工作日开通 · 7×24 技术支持