加了一条旧栏目的跳转规则,结果路径里带 old 的正常文章也被带走了,编辑保存完在前台点开直接跳到别的页面。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,规则用的是包含或者前缀匹配,开头结尾都没有锚定住,只要路径里出现那个关键字就算命中,正常页面被一起收走,越改越乱。
「跳转规则误伤」这类改动最怕改一半,回滚脚本先准备好,再动生产。改完顺手把文档补一句,省得下次自己重新推一遍。
curl -sI https://example.com/older-post | head -1 curl -sI https://example.com/old/2020/post | head -1 # 前者应 200 后者才 301
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
具体做法是,把匹配方式改成以 ^ 开头、$ 结尾,把整段路径都限定住;用 curl 把容易误伤的路径逐个试一遍,确认返回码对不对;规则收进具体的 location 里面,不要直接放在全局的 server 块里。
最后用这个标准收尾,带关键字的正常文章都返回 200,只有旧栏目路径才会发生跳转。
