判断“网站首选域名设置”的问题属于哪一层,核心方法是看现象发生在哪一步:是用户输入域名后到达了错误地址,还是搜索引擎抓取时选错了主机名,还是站点内部链接与站点地图仍指向旧域名。把这三层分开,协作交付时才能明确谁改配置、谁改页面、谁做验证。
假设团队把首选域名从 example.com 改为 www.example.com,但只改了服务器跳转,没有更新页面里的绝对链接和站点地图。此时可能出现三种不同表现:
example.com,被跳转到 www.example.com,说明重定向已经生效。但如果出现跳转循环或跳转到第三个主机名,问题就在服务器配置或 CDN 规则。example.com 时得到的仍是 200 状态,而不是跳转,说明首选域名的信号没有统一。这里要检查服务器返回状态码和 rel="canonical" 是否一致。这个例子是假设的,但它对应的是可实际检查的步骤:先看浏览器地址栏,再看 HTTP 状态码,最后看页面源码和站点地图。三层混在一起讨论,最容易导致“配置改完了,但收录仍指向旧域名”的返工。
多人协作时,建议把下面这张检查表作为交付依据,每项都记录实际结果,而不是只写“已处理”。
http://example.com、https://example.com、https://www.example.com,记录每个地址返回的状态码和最终地址。出现 301 或 308 属于永久跳转,302 属于临时跳转;如果首选域名设置目标是长期统一,临时跳转通常不是最终状态。rel="canonical" 是否指向首选域名。如果 canonical 写的是旧域名,而服务器又跳转到新域名,信号就互相矛盾。需要说明的是,canonical 是提示而非强制指令,不同搜索引擎的处理方式需要分别核查。robots.txt 没有误屏蔽首选域名。robots.txt 的抓取限制不等于可靠的索引移除;如果旧域名被 robots.txt 屏蔽,也不代表旧地址会立刻从索引消失。最常见的返工来源,是只验证了浏览器能跳转,就认为首选域名设置已经完成。实际上,跳转只解决访问层问题。以下情况仍会让搜索引擎和协作者困惑:
判断方法很简单:如果浏览器地址栏最终是首选域名,但查看源码时 canonical 或内链仍是旧域名,问题就不在访问层,而在内容层。如果浏览器地址栏没有跳转,问题就在访问层或抓取层,应先查服务器和 CDN 规则,而不是先改页面模板。
为了让协作方减少返工,交付说明里应写明:检查了哪些地址、每个地址返回什么状态码、最终到达哪个主机名、canonical 指向哪里、站点地图里写的是哪个域名。不要只写“首选域名已设置”。如果某一层尚未验证,就明确标注“未验证”,而不是默认通过。
下一步可以直接做一次三层对照:用浏览器分别访问旧域名和新域名,记录跳转结果;再查看首页源码中的 canonical 和站内绝对链接;最后打开站点地图,确认其中出现的主机名与首选域名一致。三层结果一致,才说明首选域名设置没有留下明显缺口。