动态404页面要确认可见内容,不能只看浏览器里有没有文字。正确做法是:用“禁用JavaScript的原始响应”和“执行JavaScript后的渲染结果”分别检查,再确认最终返回的HTTP状态码确实是404。只有服务端返回404、用户能看到有效导航和说明、搜索引擎抓取时不会把软404当成正常页,才算可见内容合格。
动态页面的内容往往由前端脚本请求接口后再插入DOM。此时查看网页源代码可能只有空容器,但用户实际能看到提示。反过来,源码里有大段文字,也可能被脚本覆盖或隐藏。
判断标准是:核心提示文字至少要在源码或稳定渲染结果中出现一次;如果只在某个接口返回、脚本失败就消失,就不能算可靠可见。
第一步,关闭JavaScript或使用命令行请求原始响应。以假设域名为例,执行:
curl -I https://example.com/not-exist
检查返回状态码是否为404。再执行:
curl -s https://example.com/not-exist | head -n 80
看返回的HTML中是否包含“页面不存在”“返回首页”等核心文字。如果只有<div id="app"></div>,说明内容依赖脚本。
第二步,打开浏览器开发者工具的“网络”面板,刷新页面,确认接口请求是否成功,并在“元素”面板搜索核心提示文字。接着禁用JavaScript再刷新一次,观察是否仍有可读内容。
判断结果: - 原始响应有404状态和核心文字:合格。 - 原始响应有404状态但无文字,渲染后有文字:可用,但需确保抓取工具能稳定渲染。 - 原始响应返回200或软404:不合格,先修状态码。 - 渲染后仍无文字或提示被隐藏:不合格,需要补充静态回退内容。
如果目标是“动态404页面在用户和抓取工具面前都可见”,交付物至少包括:
责任划分上,服务端状态码由后端或运维负责,前端回退由前端负责,抓取验证由SEO或测试负责。验收条件可以设为:随机抽取5个不存在的动态URL,原始响应均为404,且至少包含一段可读提示和一条站内导航链接。
情况一:页面显示“404”但状态码是200。 这属于软404。用户能看到提示,但搜索引擎可能把它当正常页处理。检查方法是看HTTP响应头,不是看页面文字。
情况二:robots.txt禁止抓取404页面。 抓取限制不等于索引移除,也不等于页面可见性合格。如果404页面被robots.txt屏蔽,抓取工具可能无法确认其状态,反而影响处理。应确认404页面本身允许抓取。
情况三:站点地图里包含大量404 URL。 站点地图不保证收录,也不适合用来提交错误页。应清理站点地图中的失效URL,而不是靠404页面优化来弥补。
情况四:HTTPS页面一定安全。 HTTPS只表示传输加密,不保证页面无漏洞或排名更好。404页面优化不需要把HTTPS当作可见内容的判断依据。
下一步,选一个当前返回200的错误页,按上面的命令行检查状态码和原始HTML。如果状态码不对,先修服务端;如果状态码正确但原始HTML无内容,再补前端静态回退。两项都通过后,才算完成动态404页面的可见内容确认。