动态页面确认可见内容,不能只看浏览器里是否出现文字。更可靠的做法是:把页面在“禁用 JavaScript”和“执行 JavaScript”两种状态下分别抓取,对比返回的 HTML 源码、渲染后的 DOM 以及 HTTP 状态码,确认目标内容究竟由服务器直接输出,还是由脚本在客户端注入。对于 SEO 死链处理来说,这一步决定了你该用 301 跳转、410 删除,还是保留页面并修复内容。
搜索引擎抓取动态页面时,通常先拿到服务器返回的原始 HTML,再决定是否执行 JavaScript 并渲染。因此“用户能看见”不等于“抓取端能看见”。判断时至少检查三项:
如果目标内容只出现在渲染后 DOM,而原始 HTML 为空,说明它依赖客户端脚本。此时若页面本身已经失效,单纯在前端显示“页面不存在”并不等于告诉抓取端这是死链。
适用前提是:原动态页面对应的内容仍然存在,只是参数、接口或模板出了问题,并且该页面还有搜索流量或外链。做法是让服务器端直接输出核心内容,而不是只靠脚本补全。
验收信号是:禁用 JavaScript 后,原始 HTML 中仍能看到目标内容;HTTP 状态码为 200;规范地址唯一且可访问。
适用前提是:动态页面依赖的数据已经删除,接口不再返回有效内容,页面无法恢复。此时不要继续返回 200 并显示空模板,否则容易被当成低质量页面。
验收信号是:直接访问旧动态 URL 时,服务器返回明确的 301、404 或 410;跳转链不超过必要层数;目标页面返回 200 且内容相关。
无论选哪种方案,都可以按下面顺序核对:
短例子:假设某个动态页面 /item?id=123 返回 200,但原始 HTML 只有空容器,文字由脚本请求接口后填入。若接口已失效,用户看到空白,抓取端也可能只看到空页面。此时应让服务器对无效 id 返回 404 或 410,而不是继续返回 200。若该商品已迁移到新地址,则返回 301 指向新地址。
页面显示“加载中”不代表内容可见;页面返回 200 不代表内容有效;页面在浏览器中能显示文字,也不代表原始 HTML 中有这些文字。HTTPS 只说明传输层加密,不保证页面没有死链、不被索引或获得排名。站点地图提交也不保证收录,它只是发现 URL 的辅助方式。
下一步,选取一个已确认失效的动态 URL,分别记录它的原始 HTML、渲染后 DOM 和 HTTP 状态码,再根据内容是否仍有替代价值,决定采用修复、301 还是 404/410。