直接回答:不要只放一句“此页面已停止维护”。更稳妥的做法是把页面分成“仍可读的历史资料”和“已失效的功能入口”两类,分别给出不同提示,并让提示本身可被机器读取、可被用户忽略。对仍可读的页面,保留内容并在顶部说明状态与替代路径;对已失效的页面,用 410 或 301 明确表态,而不是留一个 200 状态的空壳页。判断标准不是“这个页面还有没有访问量”,而是“访问者到这里想完成什么,这个目标是否还能达成”。
假设你维护一个内部文档站,决定停止维护二十个旧版产品说明页。前十几个页面处理得很顺:在顶部加一条说明,指向新版文档,用户看完就走。到第二十个页面时出现例外——这个页面被外部系统当作接口说明引用,访问者不是来阅读,而是来抄一段配置参数。顶部提示对他们没有帮助,因为内容本身已经过期,照抄会出错。
这个例外说明:“停止维护”不是一种页面状态,而是三种不同状态。内容仍然正确但不再更新,是一种;内容已过期但仍有参考价值,是第二种;内容已失效、继续展示会误导人,是第三种。三种状态对应三种提示方式,混用就会在规模化后不断冒出例外。
保留页面,保留 200 状态。在正文之前加一段简短说明,写清三件事:最后核对的大致时间、不再更新的原因、如果内容有变去哪里找最新版本。这类提示的关键是不要遮挡正文,也不要弹窗。访问者既然来了,说明这个页面还有用,提示的作用是管理预期,不是劝退。
可执行动作:在页面模板里加一个可选字段,填了才渲染提示条。结果是你能按页面逐个开启,而不是全站统一加一条横幅——全站横幅会让正常页面也背上“本站内容可能过期”的暗示。
同样保留 200 状态,但提示要更强:明确写出“以下内容描述的是旧版本行为,与当前版本不一致”,并给出差异点或替代页面链接。如果差异集中在少数几处,直接在原文相应位置加行内标注,比顶部一条总提示更有效。
这里有一个取舍:是花时间逐处标注,还是整页加一条总提示。判断依据是访问者会不会照着操作。如果页面是概念解释,整页提示够用;如果页面含命令、参数、配置样例,就必须逐处标注,否则访问者会跳过顶部提示直接抄走过期内容。
这类页面不该继续以 200 状态返回完整内容。可选做法有两种,条件不同:
不要用 302 临时重定向来长期处理停维页面。临时重定向暗示“以后可能恢复”,会让外部引用方持续保留旧链接,问题只是被推迟。
用户看到的提示条解决一半问题,另一半是让搜索引擎、外部引用方和自动化脚本知道页面状态变了。可执行动作有两步:一是把状态说明写进页面的结构化描述字段,而不是只写在视觉横幅里;二是对第三类页面,让 HTTP 状态码与页面实际状态一致,不要让 200 状态返回一个“此页已停维”的空壳。
这一步的结果会直接影响下一步:当状态码和页面内容一致时,外部系统在抓取或校验时能自动发现变化,你后续收到的“这个旧页面还能用吗”的询问会减少;如果状态码始终是 200,你只能靠人工逐个回复,规模化后无法维持。
二十个页面可以靠记忆处理,两百个就不行。需要一份停维页面清单,至少记录四项:页面地址、停维类别、替代目标、处理日期。有了这份清单,才能回答“哪些页面还在返回 200 但内容已过期”这类问题。
注意一个容易误判的信号:某个页面访问量降到接近零,不能单独证明它可以删掉或改成 410。访问量低还有别的合理解释——它可能只被外部系统在特定时刻调用,可能只通过站内搜索到达,也可能因为长期没有内链而失去入口。正确做法是先看引用来源和访问路径,再决定类别,而不是拿访问量当唯一依据。
假设例中那个被外部引用的接口说明页,如果只看访问量,它可能排不进前二十;但它的访问者目标最明确、出错代价最高。这正说明分类要按访问者意图,而不是按流量排序。
按这个顺序走,停维提示就不是给页面加一句免责声明,而是一次关于“这个页面还对谁有用、以什么方式有用”的判断。判断清楚了,提示语和状态码自然就定了。