移动端与桌面端出现404差异,通常不是“404本身不同”,而是两端请求的URL、跳转链路、渲染方式或访问环境不同。检查时应固定同一批URL,分别用移动端UA、桌面UA和真实设备访问,记录状态码、最终地址和页面内容,再对比差异出现在哪一层。
同样一个链接,桌面端正常、移动端404,常见原因可以分成四类。不要一上来就改服务器规则,先定位现象。
/product/1,移动端被跳转到/m/product/1,而后者没有配置。判断方法:在移动端和桌面端分别打开开发者工具的Network面板,勾选“保留日志”,刷新页面,记录第一个请求的URL、状态码、响应头和最终跳转地址。如果移动端第一个请求就返回404,问题在服务端路由或URL映射;如果中间有301或302,问题在跳转目标;如果文档返回200但页面显示404,问题在前端路由或接口。
多人协作时,最怕两端各查各的,最后结论对不上。建议先建立一张对照表,字段至少包括:原始URL、桌面端状态码、移动端状态码、移动端最终URL、差异类型、负责人。
执行步骤可以这样安排:
curl -I分别带桌面UA和移动UA请求,确认服务端返回是否一致。适用条件:这套方法适合页面数量可控、需要交付明确结论的协作场景。如果URL量很大,先抽样,不要一次全量跑,否则差异表会失去重点。判断结果时,只要同一URL在两端状态码不同,就应标记为待修复;如果状态码相同但最终URL不同,也要记录,因为跳转差异可能影响收录和用户体验。
移动端404经常藏在跳转细节里。桌面端访问/Page可能被服务器统一转成小写,移动端却直接按原路径查找,找不到就404。尾部斜杠同理:/about和/about/在某些配置下是两个不同资源。
检查项:
如果发现移动端跳转目标失效,优先修复跳转规则,而不是给失效地址再加一层跳转。多层跳转会让排查变难,也容易让不同端结果继续分叉。
移动端页面能打开,但样式、图片或接口请求返回404,用户看到的是空白或错误提示,容易被误报为页面404。协作交付时要写清楚是哪一类,否则开发可能只改页面路由,忽略资源路径。
在开发者工具中按请求类型筛选:Document请求返回404,属于页面级问题;Script、Stylesheet、Image、Fetch/XHR返回404,属于资源级问题。资源级404常见于移动端使用了不同的模板或打包路径,例如桌面端引用/static/app.js,移动端模板却引用/m/static/app.js,而该文件未部署。
判断结果:页面级404需要检查路由、重定向和服务器配置;资源级404需要检查模板、构建产物和CDN缓存。两者修复责任人和验证方式不同,交付时不要混在一张表里。
多人协作减少返工的关键,是让接手的人能复现你的判断。每条差异至少写清:访问设备或UA、请求URL、状态码、最终URL、截图或日志位置、判断依据、建议修复位置。
下一步:选一个近期有流量的移动端404页面,按上面的对照表完整跑一遍,确认差异属于URL、跳转、渲染还是缓存,再把结论交给对应负责人修复。修复后,用同一设备和同一UA重新验证一次,确保移动端与桌面端返回一致。