唯一责任方应由“输出最终可访问网址的那一层”承担,而不是由生成链接最多的系统承担。判断依据是:哪个系统拥有域名、路径前缀和重定向的写入权。若多个系统都能独立改写这些要素,必须先收敛写入权,再谈规则统一。
条件一:域名解析、服务器重写规则、应用路由由同一团队或同一配置仓库管理。此时责任方天然明确,只需在流程中指定一个“规则出口”,例如由运维或平台组统一审核路径前缀变更。其他系统只能提交需求,不能直接改动。
条件二:域名由基础设施团队管理,但路径和参数由多个业务系统各自拼接。这时责任方不能简单归给域名持有方,因为域名持有方通常不掌握业务路径语义。更可行的做法是把责任拆成两层:域名与协议层归基础设施团队,路径与参数层归一个被授权的规则服务。
两种条件的分界点不是系统数量,而是“谁能在不通知他人的情况下改变最终网址”。只要存在两个这样的主体,唯一责任方就还没有定义完成。
不要依赖各系统负责人口头确认。可以取同一批页面,分别记录以下信息:
如果站点地图、页面内链接和规范标签三者指向不同主机名或不同路径大小写,说明至少有两个系统在生成规则。此时先不要修改任何一侧,而是找出哪个系统的输出被最终响应采纳。被采纳的那一侧就是当前事实上的责任方,其余系统应改为引用它。
具体动作可以这样安排:选定一个规则服务作为唯一出口,其他系统不再直接拼接完整网址,只提交资源标识和必要参数。规则服务负责拼接域名、路径前缀、大小写规范和协议。动作完成后,做一次抽样验证:从每个业务系统各取若干页面,检查页面内链接、站点地图和规范标签是否都由同一出口生成。
这个动作的结果会直接影响下一步。如果抽样中仍出现不一致,说明还有系统绕过出口直接写网址,需要继续收敛;如果抽样一致,才可以把责任方写入变更流程,并要求后续新增系统默认接入出口。注意,抽样一致只说明当前输出一致,不能证明未来不会分叉,所以还需要在发布流程中保留出口审核环节。
有些历史系统无法改造,或改造成本高于收益。这时不强行指定单一出口,而是定义“最小约束”:只允许一个系统生成完整域名,其他系统只能生成相对路径;路径大小写和结尾斜杠由服务器统一处理。这样做的代价是重定向可能增多,但责任边界仍然可查。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。因此不能用“已提交站点地图”来证明网址规则正确,也不能用“已屏蔽抓取”来替代责任划分。若涉及多个搜索引擎,应分别核查其对规范标签和重定向的支持情况,不能假设行为一致。
假设订单系统和内容系统都生成商品页链接,订单系统输出带 www 的完整网址,内容系统输出不带 www 的完整网址。此时唯一责任方应是掌握域名解析和服务器重定向的一方。动作是让内容系统改为输出相对路径,由服务器统一补全主机名。结果如果页面内链接全部收敛到同一主机名,下一步才可以把该主机名写入规范标签模板;如果仍有系统输出旧主机名,则继续排查该系统的模板来源,而不是先改规范标签。
责任方定义清楚之后,网址规则才有一个可追责的起点;在此之前,任何统一规则的尝试都只是把冲突藏得更深。