检查404notfound在移动端与桌面端的差异,核心是分别用两端的真实请求复现同一批URL,再对比返回的状态码、响应内容和跳转行为。不能只看一端的结果就判断整站404处理是否正常,因为服务器可能根据User-Agent、设备类型或Cookie返回不同响应,CDN和前端路由也可能只在某一端生效。时间和人手有限时,先锁定差异最大的URL类型,再决定修哪一端。
把同一批URL分成三类:已删除的旧页面、拼写错误的地址、从未存在的路径。每类各取少量样本,分别用桌面浏览器和移动端浏览器访问,记录HTTP状态码。如果桌面返回404、移动端返回200,或反过来,说明存在真实差异,而不是缓存或网络波动造成的错觉。
常见差异来源包括:服务器按User-Agent返回不同页面;移动端被重定向到简化版或独立域名;CDN缓存了某一端的旧响应;前端框架在客户端渲染时对未知路由返回200外壳页。这些情况都会让同一URL在两端表现不一致。
浏览器开发者工具适合快速抽查,但难以批量对比。更可靠的做法是用命令行工具分别以桌面和移动端User-Agent请求同一URL,只看状态码和Location头。示例(假设域名是example.com):
curl -I -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com/old-page
curl -I -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" https://example.com/old-page
对比两次输出的第一行状态码。如果一端是404、另一端是301或200,就定位到了差异。注意:curl只反映服务器响应,不执行JavaScript,因此对客户端渲染的站点,还要用浏览器移动端模拟补充验证。
?from=或?utm=的地址,移动端可能被规则放行。判断依据很简单:如果某类URL在两端状态码不同,且不是临时网络错误,就应列入修复清单。如果两端一致返回404,只是页面样式不同,那属于展示差异,不影响404处理本身。
时间和人手有限时,优先修影响面大、修复成本低的一端。可以按下面的顺序决策:
如果两端差异来自同一套服务器规则,改一处即可覆盖两端,优先做这种修复。如果差异来自独立移动站或前端路由,需要分别改,就先处理流量更大的一端。
修完后用同样的方法复测:同一批URL,两端分别请求,确认状态码一致。检查项包括:返回码是否为404而非200;跳转链是否在一步内到达有效页面;移动端和桌面端是否都不再出现假正常页。
注意,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。如果404页面被大量外链指向,修复后仍需观察搜索引擎如何处理这些URL,不要指望立即从结果中消失。
下一步:挑出10个两端表现不同的URL,用上面的curl命令各请求一次,把状态码和跳转目标列成对照表,再按“假200优先、跳转错误其次、展示问题最后”的顺序安排修复。