国际站链接回归测试:状态码、重定向与语言映射
多语言站点发布后按语言版本扫描自有站内链接,逐条记录状态码、重定向终点与落地语言,把软 404、登录墙与合法跳转分类处理,只覆盖自有站内链接并作为发布阻断项。
多语言网站发布后,链接失效很少表现为干净的 404:更常见的是状态码 200 却落到错的语言版本、302 之后停在默认站点,或者被登录墙拦成 401。国际站链接回归测试要判的是"这条链接有没有落到该语言版本、该入口应有的页面"。这类差异只在特定地区复现,住宅代理 IP 能提供"从某地区访问"这个变量,却改变不了站点自身的语言映射、路由规则和登录态。先固定三个语言版本,各取首页 50 条站内链接跑一轮,再从第一条失败项开始复现。
先确定要检查的页面和语言版本
先把三样东西写死:获准扫描的自有测试域名与路径、语言前缀清单、排除项(外链、联盟跳转、营销短链、后台路径)。范围不写死,结果就无法复现。换个人执行会多出几十条"坏链",而这些多半只是范围没对齐。
范围写死后,换出口只改变落点,不改变判定基准。
判定基准是语言映射表,不是页面能不能打开。映射表按源语言到目标语言逐条列出预期 URL,例如 /de/ 下导航项应指向 /de/ 页面而不是 /en/ 版本。
映射表要能回答两个问题:这条链接期望落到哪个语言、落到其它语言算不算失败。答不出,后面的状态码比对就没有意义。
没有对应页面时记录结果并交由回退验收处理,本篇不讨论路由规则如何配置。联盟链接多地区验证属渠道侧校验,本文只覆盖自有站内链接。
从入口页逐层检查目标链接
目标地区没有专属页面时,回退路径可参照国际站回退体验测试。 从站点地图或批准的入口页提取范围内的链接,记录来源页、锚文本、目标 URL、期望语言与构建版本。只统计自有站内导航、正文任务入口和语言切换器,外链与第三方目的地不计入通过率。
同一目标被多个页面引用时可以合并请求,但要保留每条"来源页—锚文本—目标 URL"的关系,并按预期语言、登录态与地区配置分组统计;否则一条坏链要么被记成十几条,要么被合并成一条、看不出影响面。锚文本要原样保留,与映射表一起判定:锚文本写"德语帮助中心"却落到英文页,状态码 200 也算失败。
出口与目标语言可以交叉:用德国出口打开英文页是合法用例,不是配置错误。预期值按站点 URL 规则、显式语言、Cookie 与地区识别顺序填,不默认"出口=语言"。
同时记录状态码、跳转路径和最终语言
若落地页面存在地区版本差异,可接着看国际站地区页面差异判定。
为什么要同时记录这三个结果
逐条请求后记三件事:最终状态码、重定向终点、落地页语言。三者缺一都会误判:302 到正确页面是合法路由,200 打开却是英文页是映射错误,404 落在语言首页则要看回退规则怎么约定。
| 链接 | 期望语言 | 状态码 | 重定向终点 | 实际语言 | 实际内容 / 目标 | 结论(示例) |
|---|---|---|---|---|---|---|
/de/help | de | 200 | — | de | 德语帮助首页 | 通过 |
/fr/help | fr | 301 → 200 | /fr/support | fr | 法语支持首页 | 通过,记录 1 跳 |
/ja/pricing | ja | 302 → 404 | /ja/pricing-old | — | 未取到内容 | 失败 |
/es/about | es | 200 | — | es | 正文为"页面不存在" | 失败(软 404) |
/de/account | de | 401 | — | — | 登录墙 | 预期受限(单列) |
结论列分四类:通过、失败、不适用、未验证。软 404 说明这条链接没有给出承诺的内容,按失败计;只有经批准的认证保护页(登录墙、地域限制)在匿名扫描中可标"预期受限",单列计数并写进报告,登录后的路径仍要另跑一遍。通过率=通过数 ÷ 适用且已验证的用例数,失败、不适用、未验证分别列数——靠剔除失败抬高比例,等于没测。
同一批链接换出口重扫结果不一致时,把识别结果、构建号、缓存与登录态并列核对,再判断是链接问题还是环境差异——不要先把原因定成出口。
关键页面还要用真实浏览器复核
HEAD 只用来筛状态码与跳转链;凡要判断语言、正文与软 404,都必须 GET 内容,JS 渲染的页面再用真实浏览器跑一遍。登录、注册、定价、结账前一步这类关键路径一律进浏览器复核。三者结果不一致时,以渲染后的内容为准,并把差异记在同一行。
记录字段与网络侧排障保持同一套:响应码、阻断页特征、出口地区、时间窗,方便和网络问题对着看。
区分软 404、登录页和正常跳转
软 404 最容易漏掉:状态码 200、页面正常渲染,但正文是"页面不存在"或"内容已下线"。判定办法是核对页面标题与正文首段是否与映射表承诺一致;抽检时每个语言版本至少覆盖三个模板页。
认证保护页要按是否经批准区分:批准范围内的登录墙、地域限制页单列并注明"预期受限";不在批准范围内的公开页面返回 401/403,一律算失败。跳转分三种:一次跳到同语言的规范化地址属合法重定向(记录跳数);同一条跳转链上重复访问同一个 URL 构成循环;A→B→A 的往复同样按缺陷登记——不必只因路径"旧"就判循环。
修复按影响分级:核心导航与任务入口的失败按阻断发布处理,孤立的旧页链接按影响排期。复跑只重扫受影响语言与被引用页面,并把扫描时间、构建号、排除规则与缺陷编号一起归档;扫描设速率上限,避免给测试站造成负载。
FAQ
扫描到 302 就算链接错误吗?
不一定。语言路由、规范 URL 合并和登录流程都可能用 302。要看终点是否落在预期语言与预期路径上;终点正确、跳数在记录范围内,就判通过。
是否要扫描第三方和联盟跳转?
不扫。范围只有自有站内链接,第三方目的地与营销短链由渠道侧流程负责,混进来会把责任边界搞乱,也让通过率失去可比性。
同一天发两次布,结果怎么比?
用构建版本和扫描时间窗对齐。两个构建之间只比同一映射表、同一入口集合内的结果,差异行必须能追溯到具体链接和构建号。
做链接回归必须用住宅代理 IP 吗?
不是必须,但出口要固定一类并在结论里写明用的是哪类。需要模拟不同地区访问、观察服务端返回的语言版本时,可优先评估静态住宅代理 IP;机房出口更适合先做大批量可达性筛查。 多地区切换和会话规则可参见动态住宅 FAQ。
这一轮留下的是带构建号的映射表和排除规则,不是一句"扫过了"。若同一地区要反复扫描同一批链接,可按地区与会话要求评估动态住宅代理 IP方案,产品规则与数据隔离仍需在自有测试环境验证。
