← 路由设计 · 稳定入口与可变目标 / 远程配置入口 · 让 App 不发版也能改地址 待审核 7 / 23

远程配置入口 · 让 App 不发版也能改地址

前面几页的 indirection,目标都在服务端,你随时能改。但有一类载体一旦发出去就改不动了——印出去的二维码、已经装在用户手机上的 App、烧进设备的固件。其中写死的地址,事后想换,代价非常高:App 要重新发版、过审、还得等用户更新(而总有人永远不更新)。于是同一招再用一次:App 里不写死真实地址,只写死一个稳定的入口 id vega.link/s/help,真实地址放服务端配置,要改改一行。

这正是 rule + dispatch 的另一种动机:rule 那张「help → 真实 url」的表挪到服务端后,「改地址」就和「App 发版」彻底分了家。下面两台 App 并排——一台把帮助地址直接写死、一台只写死 /s/help,试着让帮助中心改版,看谁还能打开、谁成了死链。

这一层把「改地址」从「发版」里解放了出来。 帮助中心换路径、甚至整个迁到第三方换了域名,你只动服务端配置表一行,所有已经装出去的「新办法 App」下一次点击就跟到新地址——不发版、不过审、不挑用户版本。而「老办法 App」里那条写死的 url 一旦失效,唯一的补救是发新版并等待用户更新,在那之前点进去就是死链。

1 · 同一招的其他化身

凡是「载体发出去就改不动、但它指向的目标会变」,都适合加这一层:

  • 印刷品二维码 / 海报: 印出去就定死了——所以二维码里放短链入口而非真实活动页,活动换地址改后台即可(见短链页)。
  • 固件 / IoT 设备: 设备里写死「配置服务器入口」,真实后端地址、OTA 包地址全从那里取,换后端不用召回设备。
  • 已发出的邮件 / 短信链接: 同样指向 /s/:code 入口,而不是把当时的落地页 URL 固定写进正文。
  • App Store 审核期: 审核要几天、紧急改文案 / 地址等不起,把可变的部分做成服务端下发,审核期内也能调。
  • DNS 是这一层最早的实例: 程序连「域名」这个稳定名字,真实 IP 换了改 DNS 记录即可,客户端代码一个字不用动。

##「App 写死真实地址」vs「App 写死 /s/:id

维度 App 里直接写死真实 url App 里只写死 /s/help
改地址 改 App 代码 ✗ 改服务端配置一行 ✓
生效范围 只有装了新版的用户 ✗ 所有版本立刻跟随 ✓
发版 / 过审 每次改地址都要走一遍 ✗ 无需发版 ✓
老版本用户 不更新就一直是死链 ✗ 不更新也能跟到新地址 ✓
点击统计 拿不到(直连目标) 入口处天然能记 ✓
代价 无(但债留给未来) 多一跳 + 一张配置表要维护 + 入口故障则全部失效(需要回退方案)

注意那条代价:入口成了单点——服务端这张表故障,所有 id 一起失效。所以真实系统常给 App 留一份内置默认地址(拉不到配置就用打包时的默认值),把「可变」和「可用」都顾上。

2 · 相关页