先给结论:灰度阶段“看起来没问题”,往往只说明你抽到的那批流量没有触发例外。要判断域名是否真的适合全量发布,不能只看灰度期间页面能否打开,而要把灰度结果拆成“已覆盖条件”和“未覆盖条件”两类。若未覆盖条件里包含域名解析、跳转、证书或地区线路差异,就应先补齐这些验证,再决定是否全量放量;否则全量后暴露的例外,通常不是内容问题,而是域名层问题。
灰度发布常见的做法是把一小部分流量指向新域名,观察可用性、跳转和页面返回。这个动作能验证“被抽中的那部分场景”,但抽中范围通常有限。例如只从公司办公网访问、只走一条 CDN 线路、只测了主域名而没测带 www 的版本。此时灰度通过,只能说明这些条件成立。
当全量发布把流量扩大到不同地区、不同运营商、不同设备后,例外才可能出现。典型例外包括:部分地区解析到旧地址、www 与裸域跳转方向不一致、证书链在某些客户端不完整、旧链接 301 只覆盖了部分路径。它们不一定表现为整站打不开,而可能是部分用户被带到错误页面或反复跳转。
因此,灰度结果要按条件记录,而不是只记“通过/不通过”。你可以把每次灰度写成三列:访问来源、域名形态、结果。这样全量前就能看出哪些条件仍未被覆盖。
假设你手里有一份灰度观察记录,下一步不是直接宣布全量,而是把它转成待验证条件。可以按下面的顺序处理:
这个清单的关键是区分“已验证”和“未验证”。未验证不等于有问题,但也不能当作已通过。全量发布前,至少应把域名解析、跳转规则、证书覆盖范围、旧链接处理这几项归入已验证或已知风险。
并非所有例外都要阻断发布。判断依据是:该例外是否会让用户无法到达目标内容,或到达错误内容。若只是个别统计波动,通常可以观察;若涉及域名层,则应先处理。
www、www 又跳回裸域,会让用户和抓取都陷入循环。应固定一个主形态,其余形态单向跳转。www 或子域时,部分入口会触发证书警告。证书有效也不等于没有其他安全漏洞,但证书覆盖范围是可验证项。这里要强调一个常见误解:robots.txt 的抓取限制不等于可靠的索引移除。若旧域名内容需要下线,仅靠抓取限制并不能保证索引消失;站点地图也不保证收录。域名切换后的索引处理,应作为独立事项验证,而不是假设全量后自然完成。
假设某次灰度只从两个地区访问新域名,页面均正常,跳转也正确。全量前你发现旧链接里有一批带参数的 URL 未被灰度覆盖。此时有两种选择成立的条件:
这个例子的重点不是数字,而是条件:例外是否落在关键路径上。若落在关键路径,先处理;若不落在关键路径,可带风险发布并持续观察。
如果全量后仍出现域名层例外,先不要急着回退全部流量。可以先按影响范围分类:是全部用户还是部分用户,是全部域名形态还是某个形态,是所有路径还是特定路径。分类后再决定是局部修复还是整体回退。
一个实际动作是:保留灰度入口作为对照,同时扩大验证范围。若灰度入口正常、全量入口异常,差异通常来自新增条件,而不是域名本身不可用。此时应针对新增条件修复,而不是推翻整个域名方案。
最后,HTTPS 不保证安全无漏洞或排名,不同搜索引擎对域名切换的支持情况也须分别核查。把灰度当作条件覆盖检查,而不是一次性通过证明,才能在域名选择与发布之间做出更稳的决定。