检查移动端与桌面端的404差异,核心是分别用两端的真实请求头、User-Agent和渲染环境访问同一批URL,对比返回的状态码和页面内容。差异通常来自三处:服务器按设备类型做了不同跳转、前端JavaScript在某一端才发起请求、CDN或反向代理缓存了不同版本。多人协作时,应把检查脚本、对比表格和判定规则一起交付,而不是只给一句“移动端有问题”。
两端检查必须控制变量,否则结果无法归因。准备以下内容:
这里最关键的一步是用原始HTTP响应而不是浏览器看到的页面来判断404。浏览器可能把404页面渲染成带导航的友好页,也可能由前端路由接管显示“页面不存在”,但服务器实际返回的是200。只看肉眼效果会漏掉真正的状态码差异。
对每个URL,分别用桌面UA和移动UA发起请求,记录状态码。可以借助命令行工具完成,例如用curl指定UA并只输出状态码和响应头:
curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -s -o /dev/null -w "%{http_code} %{redirect_url}" https://example.com/old-page
把UA换成桌面端再执行一次,对比两次输出。如果状态码不同,继续看响应头中的Location、Cache-Control、Vary等字段。Vary字段尤其重要:如果它包含User-Agent,说明缓存层会按设备返回不同结果,这本身就是差异来源。
常见差异及对应判断:
第一次对比出现差异时,不要直接下结论。按以下顺序复核:
验证的判定标准是:只有当同一URL在两端、多次请求下状态码稳定不同,才能认定为设备相关的404差异。偶发差异应归入缓存或发布问题,单独处理。
差异修复后,需要防止回归。建议在发布检查清单中加入一项:对核心URL分别用桌面和移动UA请求,确认状态码一致或符合预期。把UA字符串、检查命令和记录模板放进团队文档,新成员可以直接复用。
同时注意边界:robots.txt的抓取限制不等于可靠的索引移除,即使移动端被robots.txt屏蔽,也不代表该URL不会以其他方式出现在结果中;站点地图不保证收录;HTTPS不保证安全无漏洞或排名。这些与404检查相关但不等价,不要混为一谈。不同搜索引擎对移动端内容的处理方式需要分别核查,不能拿一个平台的表现推断另一个平台。
下一步:从你的URL清单中挑出10个曾改版或已下线的路径,用上面的命令分别以桌面和移动UA请求,把状态码和跳转地址填入记录模板。出现差异的条目再按验证阶段的顺序逐项排查。