先给结论:不要按“链接是否还能打开”来决定,而要按“旧引用是否还在替读者完成一个判断”来分流。产品文档改版后,旧文章里的引用大致会落入三种处理:保留并补一句适用版本,改写成指向新结构的说明,或直接退出并留一条迁移提示。判断依据不是链接状态码,而是引用承担的功能是否仍然成立。
旧文章里的引用通常在做三件事之一:证明某个参数或行为、引导读者去完成一个操作、或者只是顺手带上的背景来源。改版后,只有前两种需要优先核对。
把引用按功能分类,比按新旧分类更省事。一个引用即使指向的是老页面,只要它证明的事实没变,就不该动。
产品文档改版常见的情况是内容还在,只是换了目录层级或标题。这时旧引用指向的锚点可能失效,但事实本身没变。处理方式是保留引用,同时做一次实际动作:打开旧文章,找到那句依赖引用的话,确认它是否还成立。
如果成立,下一步是核对锚点。很多改版会把原来的小节标题改掉,导致 <a href="#old-anchor"> 这类锚点失效。此时只需要把锚点换成新标题对应的锚点,不必重写整段。这个动作的结果会直接影响下一步:锚点能对上,说明只是结构平移,旧文章其余引用可以按同样方式批量核对;锚点对不上,说明内容被拆散或合并,需要进入改写流程。
保留还有一个条件:旧文章面向的读者和改版后的文档面向的读者是同一批。如果改版同时调整了目标读者,比如从开发者转向运维,那旧引用即使能打开,也可能把读者引到不合适的层级。
比失效更麻烦的是引用还能打开,内容却已经变了。比如旧文章写“在配置文件中设置 timeout”,改版后该参数移到了环境变量,页面还在,但读者照做无效。这类引用必须改写,而不是保留。
改写时不要只换链接文字。要回到旧文章里那句依赖引用的话,判断是改句子还是改引用。如果只是参数位置变了,改引用并补一句“该参数现通过环境变量配置”即可;如果整个操作路径都变了,旧文章的那一段可能整体过时,这时改写的成本已经接近重写。
一个可核对的判据:把旧文章里的引用逐个打开,问自己“读者看完这个引用,能不能完成旧文章承诺的那件事”。能,就保留;不能但稍作说明就能,就改写;不能且说明也救不回来,就退出。
退出不是删掉引用就完事。当引用指向的页面已经不存在,或者它证明的事实已经被推翻,继续保留会误导读者。此时应该把引用替换成一条明确的迁移说明,比如“该配置项已在某次改版中移除,替代方式见某处”。
退出的判断要谨慎。链接返回 404 并不自动等于该退出,可能是临时故障或路径调整;反过来,链接能打开也不等于该保留,可能是旧页面还没被清理。所以退出前最好确认两件事:该页面是否确实不再维护,以及旧文章里那句话是否还有独立价值。如果那句话本身还有用,只是出处没了,可以保留句子、去掉引用,而不是连句子一起删。
多个角色对同一引用有不同理解时,争论“该不该留”往往没有结果。更有效的做法是把它转成一张可核对的项目表,每行至少包含:旧文章位置、引用原目标、引用承担的功能、改版后的对应位置、当前判断(保留/改写/退出)、判断依据。
填表的过程本身会暴露分歧来源。比如有人主张保留,是因为他只看了链接能否打开;有人主张退出,是因为他知道该页面已停止维护。把依据写进同一列,分歧就从观点之争变成事实核对。核对完成后,下一步动作也随之明确:保留的核对锚点,改写的回到原句,退出的补迁移说明。
假设一个短例子:某旧文章引用一段配置说明来证明默认值。改版后该说明页还在,但默认值从 30 改成了 60。此时链接有效,引用却已经不准。按上面的流程,它属于改写:回到旧文章那句“默认值为 30”,改成 60,并把引用指向新说明页。如果只检查链接状态,这个错误会被漏掉。
最后一步是记录处理结果,而不是记录处理数量。哪些引用被改写、哪些被退出、依据是什么,写清楚之后,下一次改版可以按同样的功能分类快速过一遍,而不必从零争论。