子域名解析,页面内容相同但响应头不同会影响哪些判断

📍 WDQWDWQD987AAAAA:216.73.216.21
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /6fdb2b00e695.html
📄

子域名解析,页面内容相同但响应头不同会影响哪些判断

相同页面内容配上不同响应头,最直接的影响是:判断“这个子域名该保留、改写还是退出”时,不能只看正文是否一致。响应头会改变缓存、规范、抓取和索引行为,因此同一份内容在不同子域名上可能被当成不同资源处理。要作决定,先把响应头差异分成三类证据:缓存与内容协商、规范与重定向、抓取与安全策略,再分别核对。

响应头不同,先分清是缓存差异还是内容协商差异

如果两个子域名返回相同 HTML,但一个带 Cache-Control: max-age=3600,另一个带 Cache-Control: no-store,这通常说明两个入口的内容分发策略不同,而不是内容本身不同。此时保留两个入口的适用前提是:它们服务不同地区、不同登录状态或不同设备,并且你确实需要独立控制缓存。若只是同一份内容被复制到两个子域名,no-store 那一侧会让中间缓存和浏览器反复回源,抓取预算和回源压力更难预测,退出或改写的理由就更强。

另一个常见差异是 Vary。假设 A 子域名返回 Vary: Accept-Encoding,B 子域名返回 Vary: User-Agent,即使正文相同,B 的缓存键会按 User-Agent 分裂,移动端和桌面端可能各自缓存一份。判断时不要只看“内容一样”,而要看“同一次请求会命中哪份缓存”。动作上,可以先用同一 URL、同一请求头分别请求两个子域名,记录状态码、Cache-Control、Vary、Content-Type 和 Content-Language。结果若显示同一语言、同一编码却命中不同缓存策略,下一步应统一缓存键,而不是急着做重定向。

规范与重定向信号冲突时,保留和退出的前提不同

页面正文相同,但一个子域名返回 Link: <https://example.com/page>; rel="canonical",另一个没有该响应头,只在 HTML 里写 canonical,这会影响你判断哪个 URL 是主入口。保留两个子域名的前提是:它们各自有独立 canonical,且 canonical 指向自身或各自对应的主版本。若两个入口都指向同一个规范 URL,那么被指向的一方更适合保留,另一方更适合改写为重定向或退出。

还要看重定向链。假设 A 子域名返回 301 到主站,B 子域名返回 200 且内容相同,那么 B 不是“等价入口”,而是一个仍可被抓取的独立资源。此时退出 B 的适用前提是:B 没有独立流量、没有外部链接、没有品牌或活动用途。若 B 有独立链接,直接退出会让这些链接失去落点,更合理的动作是先改写 B 的 canonical 和内部链接,再观察抓取与展示变化,然后决定是否重定向。这里要说明:robots.txt 的抓取限制不等于可靠的索引移除;即使 B 被 robots.txt 挡住,它仍可能因外部链接出现在结果中。

抓取策略和安全响应头会影响“是否同一资源”的判断

相同内容但响应头不同,还可能体现在抓取许可和资源加载上。比如 A 返回 X-Robots-Tag: noindex,B 没有该头,那么 B 更可能被当作可索引版本;A 即使正文相同,也不应被当成主入口。保留 A 的前提通常是:A 只用于内部预览、测试或付费墙后,且你接受它不进入索引。若 A 原本是正式入口,却误带 noindex,动作应是移除该响应头并复测,而不是用站点地图强行提交。站点地图不保证收录,它只能帮助发现 URL,不能覆盖 noindex。

安全类响应头也会干扰判断。假设 A 返回 Strict-Transport-Security,B 不返回,这不代表 B 不安全,也不代表 A 一定安全无漏洞;HTTPS 不保证安全无漏洞或排名。它只说明浏览器对 A 的后续请求会强制 HTTPS。若你打算退出 B,需要先确认 B 是否仍被 App、旧客户端或第三方回调使用。一个可执行动作是:在日志中按子域名分别统计状态码和请求来源,若 B 的请求量下降但仍有非浏览器来源,退出可能造成接口失败;若 B 的请求几乎都来自爬虫且内容与 A 重复,改写或重定向更合适。

用一组可核对证据决定保留、改写还是退出

不要用单一现象下结论。请求量归零、抓取量下降或某个响应头缺失,都不能单独证明处理正确,因为缓存、日志采样、爬虫调度、CDN 回源和外部链接变化都可能解释这些现象。更稳妥的做法是并列核对以下证据:

假设一个短例子:A 和 B 正文相同,A 返回 200、Cache-Control: max-age=600、canonical 指向自身;B 返回 200、Cache-Control: no-store、X-Robots-Tag: noindex,canonical 也指向 A。此时保留 A、改写 B 为 301 到 A 更符合证据;但若 B 还有独立 App 回调,退出会破坏调用,则应保留 B 但移除 noindex 之外的影响,或把 B 改成独立规范入口。动作之后要复测响应头是否按预期变化,再决定下一步是继续观察还是扩大改写范围。

不同搜索引擎支持情况须分别核查

响应头对规范、索引和抓取的影响,在不同搜索引擎之间并不完全一致。X-Robots-Tag、Link 响应头和 canonical 的处理方式需要分别核查,不能因为一个引擎忽略了某个头,就推断另一个引擎也会忽略。若你的子域名同时面向搜索、平台推荐和广告,还要区分:搜索更依赖抓取和索引信号,平台推荐更依赖内容与互动信号,广告落地页则更依赖最终 URL 和重定向链。三者不能互相替代判断。最终取舍应落在可复测的响应头、链接和日志证据上,而不是只凭正文相同就认定两个子域名等价。

图1 图2

nginx