防止二维码链接失效 - 有效期管理与运营设计实践指南
二维码链接失效是怎么发生的
二维码本身没有有效期。静态二维码里编码的数据可以半永久地读取下去。但是,只要二维码指向的那个链接失效,用户扫码后就会落到 404 错误页面上。这就是所谓的「二维码链接失效」。
链接失效的主要原因有 3 个。第一是网站改版或链接结构变更。重做网站时忘了给旧链接设置重定向,印刷品上的二维码就会集体失效。第二是活动页面被删除。限时的落地页删掉之后,传单和海报上的二维码却还留在世界上。第三是域名到期。如果短网址服务的域名到期失效,用那家服务生成的所有二维码都会一起失灵。
从一开始就把寿命考虑进设计
在制作二维码的阶段,就带着「跳转目标能活多久」的意识去设计非常重要。对于要长期使用的二维码(产品包装、名片、楼宇的指示牌),请选用不太可能变动的链接。在自有域名下设一个固定路径(例如 example.com/qr/product-manual),让跳转目标的内容变了、链接本身仍然保持不变,这才是理想的做法。
对于限时的二维码(活动通知、促销),要事先决定好期限结束之后往哪里转。活动结束后不要直接返回 404,而是重定向到「本次活动已结束,最新信息请看这里」这类引导页面,这样就不会伤到用户体验。
重定向的策略
防止二维码链接失效最有效的办法,是在中间加一层重定向。二维码里编码的是自己管理的固定链接,再由这个链接重定向到最终的内容。跳转目标变了的时候,只要更新重定向设置就行,已经印出去的二维码不必更换。
实现方式有好几种。在 Web 服务器的配置文件里(nginx 的 rewrite、Apache 的 .htaccess)设置 301 重定向是最简单的一种。需要更灵活的管理时,可以自建短网址服务,或者使用带管理后台的动态二维码服务。不管选哪一种,都需要有一套机制去定期确认重定向目标仍然有效。
中间那一层还有一个附带的好处:跳转目标换了几次、什么时候换的,都会留在自己的记录里,日后追查「这张海报上的码现在到底通向哪里」会容易得多。
链接的存放方式大致有三种,各自的长短处列在下面。
| 存放方式 | 更改跳转目标 | 对外部的依赖 | 提供方停止服务时 | 适合的用途 |
|---|---|---|---|---|
| 直接编码最终链接 | 需要重新印刷 | 只有自己的域名 | 只要域名不过期就没有影响 | 不打算再改的说明与指引 |
| 先指向自己的固定链接再重定向 | 只更新重定向设置即可 | 只有自己的域名 | 自己持续维护就没有影响 | 要用好几年的印刷物 |
| 他人的短网址或动态二维码服务 | 在管理后台里改 | 提供方的域名和服务 | 经由该服务的码会一起失去去处 | 短期活动 |
小心对短网址服务的依赖
把很长的链接放进二维码会让图案变得复杂,所以有时会用短网址服务把它变简洁。不过这个办法有一个容易被忽略的弱点。
短网址服务一旦停止运营,用它生成的所有码就会同时失去目的地。换来便利的代价,是把码的寿命交给了一家外部服务能不能活下去。要长期使用的码,与其依赖别家的短网址服务,不如自己准备一套能掌控的转发机制,这样才能压住将来的风险。
动态二维码服务停掉之后会怎样
如果动态二维码的提供方停止了业务,所有经由这家服务的二维码都会一起失效。已经印在传单和海报上的码没法再改,损失因此相当严重。
过去也有过这样的案例:一些二维码生成服务放掉了自己的域名,域名被第三方拿走之后,原来的码就被重定向到恶意网站。要避开这类风险,只能选择使用自己管理的链接,或者挑选可靠性足够高的服务商。
长期运营中最要紧的是域名管理
长期使用的码里,最容易变成弱点的地方是跳转目标域名的管理。一旦忘记续费导致域名失效,用这个域名的所有已印刷的码都会一齐失效。码本身安然无恙,但目的地整个消失了。
把自动续费打开、让支付信息保持最新、再准备好负责人更替时也能顺利交接的流程,这几件事都省不掉。要让码活得久,可靠地把域名一直续下去是最不起眼、也最重要的一份准备。
印刷物的寿命与网页的寿命是错开的
链接失效的背后,还有一层原因:印刷物和网页的寿命本来就不合拍。海报和册子一旦印出来,可能会被用上好几年。而网页会因为改版、因为活动结束,在相对短的周期里换掉样貌。
做码的时候没意识到这段时间差,就会出现印刷物还在现役、唯独跳转目标先消失的局面。把印刷物那种长寿命预先算进去,从一开始就订好一份「怎样稳定地维护跳转页面」的计划,是很重要的。
让运营在负责人换人之后也能延续
链接失效多半不是技术问题,而是运营交接断了链条造成的。做码的人因为调动或离职而离开之后,常常就变成没人清楚哪个码连到哪里的状态。
把跳转目标的清单和更新步骤留成记录,用任何人看了都明白的形式共享出去,这一步省不掉。只要把「换了人运营也能接着走」的机制搭好,就能避免链接不知何时已经断掉这种事。记录和共享是长期运营的地基。
定期监控与盘点
为运行中的二维码建立定期监控的体制。具体做法是维护一份二维码清单(电子表格或数据库),记录每个二维码的跳转链接、张贴位置、制作日期和预期寿命。每月或每季度跑一次脚本,检查所有链接的 HTTP 状态码,把返回非 200 响应的挑出来。
特别需要留意的是把外部服务的链接直接编码进二维码的情形。外部服务改动链接结构或者干脆停止服务,都不在自己的控制范围内,所以中间夹一层重定向很重要。此外,把印刷品的废弃时间也记下来,已经回收销毁的印刷品上的二维码就可以从监控对象里剔除,管理成本随之下降。
清单本身也建议放在团队共用的位置,而不是某个人的本地文件里。