改动 404 页面或相关跳转规则之前,要保存的原始状态不只是页面内容,还包括服务器返回的状态码、响应头、URL 规则和当前跳转链路。很多人以为复制一份页面 HTML 就算留底,结果改完后发现旧 URL 原本返回的是 404 还是 410、是否带跳转、是否被 robots.txt 限制,全都说不清。正确做法是先做一份可回滚、可对比的原始状态快照,再动手改。
把 404 页面另存为 HTML 文件,只保存了浏览器渲染出来的内容,丢失了真正影响搜索引擎和用户判断的信息。HTTP 状态码 404 是服务器在响应行里返回的,不是页面正文里的文字;一个页面写着“找不到”,服务器却返回 200,那就是软 404,和真正的 404 完全不同。同理,响应头里的 Location、Cache-Control、X-Robots-Tag 都不会出现在另存的 HTML 里。
所以,只备份页面会带来两个后果:一是无法判断改动前后状态码是否一致,二是回滚时只能恢复外观,恢复不了服务器行为。
针对 404 场景,改动前至少保存以下几类信息,并标注采集时间:
Location、Content-Type、Cache-Control、X-Robots-Tag。需要区分的是:robots.txt 的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证页面从索引中消失。站点地图也不保证收录,它只是提交线索。这两项要作为原始状态记录,但不能当成移除手段。
下面是一套可操作的采集流程,适用于已有页面或项目在改动前留底。假设要处理的是 https://example.com/old-page 这类 URL,示例中的域名和路径仅为说明用法。
curl -I https://example.com/old-page。把输出重定向到文件,例如 curl -I https://example.com/old-page > old-page-headers-before.txt。这样能拿到状态码和响应头。curl -s https://example.com/old-page -o old-page-body-before.html。注意这一步会跟随部分跳转,若要观察原始响应,加上 -L 之外还需对比加与不加的结果。判断结果的方法:如果 curl -I 返回的第一行是 HTTP/1.1 404 Not Found,说明该 URL 当前是真实 404;如果返回 200 但正文写着“页面不存在”,那就是软 404,改动时要特别标注,因为这两种情况对搜索引擎的含义不同。
改完后用同样的命令再采集一次,把 before 和 after 两份文件逐项对比。重点看三处:状态码是否变化、响应头是否新增或丢失跳转、正文是否仍返回预期内容。如果发现旧 URL 从 404 变成了 200,或者跳转链出现了多级 301,就要判断这是有意设计还是配置失误。
回滚的前提是原始状态可读。如果只留了页面截图,服务器规则没有留底,就无法把状态码和跳转恢复原样。所以保存原始状态时,配置文件和响应头比页面外观更重要。
下一步:先对你准备改动的 URL 跑一遍 curl -I,把状态码和响应头存成带日期的文件,再开始修改页面或跳转规则。