页面正文、标题、canonical 都相同,只有响应头不同,最先受影响的不是“页面内容是否重复”的判断,而是抓取、缓存、语言地区定位和索引版本选择这几类判断。下面用一个假设情境说明:某站点启用了一个特殊后缀域名,同一套页面同时通过旧域名和新域名返回,正文完全一致,但新域名多了 Content-Language、Vary、Cache-Control 和不同的 Link 响应头。此时要判断的不是“内容重复不重复”,而是“哪个响应头在改变搜索引擎和中间层对这份内容的处理方式”。
响应头可以粗略分成三类,判断方式不同。
Link 中的 rel=canonical、X-Robots-Tag、Location(重定向)、Content-Type 中的字符集。它们可能让同一份正文被归到不同 URL 或不同版本上。Cache-Control、Vary、Content-Language、Content-Encoding。它们不一定改变索引,但会改变中间缓存和抓取工具拿到的是哪一份响应。Date、Server、X-Request-Id 一类。除非值本身异常,否则通常不改变对页面内容的判断。动作建议:把两个响应的头部逐项列出,先标出属于前两类的字段,再决定要不要继续比对正文。如果正文相同但 X-Robots-Tag 或 Link 不同,正文比对已经没有意义,应直接进入索引信号判断。
假设情境:新域名响应带 X-Robots-Tag: noindex,旧域名没有;两个域名的 HTML 正文、title、canonical 完全一致。此时可能出现两种成立条件完全不同的判断。
条件一:noindex 只出现在新域名上。 如果新域名是主要对外入口,这个响应头会阻止新域名版本进入索引;旧域名版本仍可能保留。此时需要先确认业务上希望哪个域名被索引,再决定是移除该响应头,还是让旧域名做 301 到新域名。动作是:先取一份新域名的原始响应确认该头确实存在,再检查旧域名是否可访问且未被同样标记。结果会直接决定下一步是改响应头还是改重定向。
条件二:两个域名都没有 noindex,但 Link 里的 canonical 指向不同。 正文相同不会自动让搜索引擎合并两个版本,canonical 指向才是主要信号之一。如果新域名 canonical 指向自己、旧域名 canonical 指向新域名,判断会偏向新域名;反过来则偏向旧域名。动作是:分别抓取两个 URL 的响应头,记录 canonical 指向,再看哪一侧与站点地图、内链实际使用的 URL 一致。结果会影响是否需要统一 canonical,而不是先改正文。
这里要说明一个常见误判:robots.txt 的抓取限制不等于可靠的索引移除。即使某个特殊后缀域名的路径被 robots.txt 挡住,已抓取的版本仍可能留在索引里;同样,站点地图不保证收录。响应头不同时,不要用“已经屏蔽抓取”来推断“索引已经按预期处理”。
如果两个响应只差 Cache-Control 和 Vary,正文看起来相同,但抓取工具和中间缓存拿到的可能是不同时间点的版本。
Cache-Control: no-store 与 max-age=3600 并存时,缓存层可能长期返回旧副本,导致你看到的“相同正文”其实是旧版本。Vary: Accept-Language 或 Vary: User-Agent 会让同一 URL 按请求头返回不同内容。此时正文相同只是当前请求下的巧合,换一个请求头可能就不同。Content-Language 不同但正文相同,可能影响语言地区定位,尤其是特殊后缀域名本身带有地区含义时。动作建议:用同一 URL、不同 Accept-Language 和 User-Agent 各取一次响应,比较正文哈希和关键响应头。如果只有响应头变化而正文哈希不变,可以缩小到缓存与协商层;如果正文哈希也变化,问题就不在响应头,而在动态渲染或内容协商逻辑。这个结果决定下一步是清理缓存规则,还是排查渲染链路。
不是所有响应头不同都需要动作。可以用下面的条件区分。
可以暂时忽略的条件: 差异只出现在 Date、Server、X-Request-Id 等传递字段;两个 URL 的 canonical、robots 指令、重定向目标一致;业务上只有一个域名对外使用,另一个仅作内部或历史保留。
必须处理的条件: 差异涉及 X-Robots-Tag、canonical 指向、Location 重定向目标、Content-Type 字符集;或者 Vary 导致同一 URL 返回不同正文;或者特殊后缀域名与主域名同时可访问且都返回 200。
动作建议:先按“是否改变索引信号”和“是否改变同一 URL 的返回内容”两个维度分类。只落在传递字段的差异可以记录后跳过;落在索引信号或内容协商上的差异,需要先确定目标 URL,再统一响应头。这个分类结果会决定后续是改服务器配置、改 CDN 规则,还是只做监测。
假设你调整了新域名的响应头,去掉了 noindex,并让 canonical 指向新域名。接下来观察请求量、抓取量或某个统计指标归零或上升,都不能单独证明处理正确。请求量下降还可能来自:抓取预算被其他路径占用、站点地图未更新、内链仍指向旧域名、CDN 缓存未刷新。抓取量上升也可能只是短期重抓,不代表索引版本已经切换。
更稳妥的复查顺序是:
这样做的原因是,响应头只是判断输入之一,不是结果本身。把输入变化直接当成结果正确,容易在下一步做出错误决策。对于特殊后缀域名,尤其要先确认地区定位、语言信号和 canonical 是否指向同一个目标,再决定是否继续调整其他配置。