测试死链接时,动态页面不能只看 HTTP 状态码。状态码返回 200 只说明服务器接受了请求,不代表用户最终能看到有效内容。确认可见内容需要检查三件事:渲染后的 DOM 中是否存在正文文本、该文本是否对用户可见、以及页面是否在无脚本或降级情况下给出可理解的提示。最关键的一步是拿到渲染后的页面快照,再与原始 HTML 对比。
动态页面通常由 JavaScript 在浏览器中填充内容。用 curl 或普通抓取工具拿到的原始 HTML 可能只有空容器,例如 <div id="app"></div>。这时直接判断“无内容”会误判。准备阶段需要两份材料:
如果项目已有页面,可以在浏览器开发者工具的 Elements 面板中查看渲染后的结构,或使用支持执行 JavaScript 的无头浏览器获取快照。这一步不涉及具体品牌工具,选择能导出渲染后 HTML 的方式即可。
拿到渲染快照后,不要只搜索关键词字符串。字符串可能出现在 <script>、注释、隐藏属性或 display:none 的元素里。应按以下顺序检查:
display:none、visibility:hidden、hidden 属性或零尺寸裁剪隐藏。短例子(假设):某动态详情页原始 HTML 只有 <div id="root"></div>,接口返回 {"title":"示例标题","body":"示例正文"}。渲染后若 #root 内出现“示例标题”和“示例正文”,且没有隐藏样式,可判断可见内容成立;若只出现标题而正文为空,则属于内容不完整,不应视为有效页面。
确认可见内容后,还要区分“用户可见”和“搜索引擎可处理”。robots.txt 的抓取限制不等于可靠的索引移除:被 robots.txt 禁止抓取的页面仍可能因外部链接出现在结果中,只是摘要信息可能受限。站点地图不保证收录,提交地图只表达发现意愿。HTTPS 不保证安全无漏洞或排名,它只是传输层条件之一。
验证时可以做两项对比:
不同搜索引擎对 JavaScript 渲染的支持情况须分别核查,不能假设一致。若页面同时面向网页搜索和平台推荐,应分别确认各自可获取的内容范围。
动态页面上线后,内容可能因接口变更、字段改名或前端报错而消失,但 HTTP 状态码仍为 200。维护阶段建议在原有检查中加入一项:定期对关键动态页面生成渲染快照,确认正文容器非空且未被隐藏。发现异常时,先区分是接口失败、渲染报错还是样式隐藏,再决定修复位置。
下一步:选取一个当前依赖脚本渲染的代表性页面,保存其原始响应和渲染快照,按上面的检查项逐条比对,记录正文容器是否可见、降级情况下是否有提示。这个结果将决定你是需要调整渲染方式,还是只需修正隐藏样式或接口字段。