站内的链接全都写成不带斜杠,固定链接结构又以斜杠结尾,每点一次文章都要先吃一个 301 才开始真正加载页面。乍看像缓存或者权限的锅,追下去往往不是。

curl -sI https://example.com/post-name | grep -i '^location'
# 不再返回 301 说明内链写法已统一

追下去是这么回事:内链生成和固定链接结构不是同一套规则,服务端把这两种写法当成两个不同的资源,只能靠跳转把地址纠正过来,一次点击白付一个往返。

「尾斜杠重复跳转」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

具体做法是,后台的固定链接先选带斜杠的结构,把服务端的规则统一起来;把菜单和正文里面的内链批量替换成同一种写法;主题里拼接链接的地方统一补上斜杠,分页和归档别漏掉。

验收就看一点,文章链接直接返回 200,开发者工具里看不到多余的那次跳转记录。

作者 9823189