移动端与桌面端的死链检查差异,主要来自三方面:抓取时使用的 User-Agent 不同、页面渲染方式不同、以及链接在响应式布局下的可见性不同。要定位差异,最可靠的做法是分别用移动端 UA 和桌面端 UA 抓取同一批 URL,对比两边的状态码与最终跳转地址,再结合真实设备或移动模拟环境确认链接是否可点。下面是一份可执行清单,每项都说明查什么、怎么查、结果说明什么。
要查什么:同一 URL 在移动 UA 与桌面 UA 下返回的 HTTP 状态码是否一致。
怎么查:用命令行工具分别请求,例如 curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -I https://example.com/page,再把 UA 换成桌面版重复一次。
结果说明什么:如果移动端返回 404 或 410 而桌面端返回 200,说明服务器可能按 UA 做了差异化处理,这类差异属于服务端配置问题,不是链接本身失效。如果两端都返回 404,则是真正的死链,与设备无关。
要查什么:链接是否在移动端被重定向到另一个地址,桌面端却没有。
怎么查:加 -L 参数跟随跳转,观察两端最终 URL 和跳转次数。
结果说明什么:常见情况是移动端被导向 m 子域或独立移动站,若目标页已下线,就会形成只在移动端出现的死链。此时要判断是重定向规则过期,还是落地页被删除。重定向链越长,越容易在某一环断掉,两端表现也越可能不一致。
要查什么:同一个链接在窄屏下是否被遮挡、溢出或隐藏,导致用户点不到。 怎么查:在浏览器开发者工具中切换到移动视口,用元素检查确认链接的可点击区域,再用真实手机点一次。 结果说明什么:如果桌面端可点、移动端被浮层或导航折叠遮住,这属于可用性问题而非 HTTP 死链,但对用户同样等于“打不开”。这类问题抓取工具通常报不出来,必须靠人工或渲染后检测。
要查什么:链接是写在 HTML 源码里,还是由 JavaScript 动态插入。 怎么查:查看页面源代码搜索目标 URL;再对比渲染后的 DOM。 结果说明什么:源码中不存在、只在渲染后出现的链接,普通抓取工具可能漏检。移动端和桌面端如果加载不同的脚本或组件,渲染出的链接集合就会不同,死链也可能只出现在其中一端。检查时应以渲染后的结果为准,并分别记录两端差异。
要查什么:死链是否集中在特定模板或栏目。 怎么查:从站点地图和主要导航各抽取一批 URL,两端分别跑一遍,按栏目归类失败项。 结果说明什么:如果失败集中在某个模板,说明问题出在模板层,而非个别页面。需要提醒的是,站点地图只用于提供发现线索,不保证收录;robots.txt 的抓取限制也不等于可靠的索引移除,两者都不能替代实际的状态码检查。
下一步:把上述两端抓取结果整理成一张对照表,列出 URL、移动端状态码、桌面端状态码、最终落地页和差异类型,再按“服务端配置”“重定向规则”“前端渲染”“布局遮挡”四类分派修复。修复后对同一批 URL 复跑一次,确认两端结果一致。