先给结论:当多个域名承载相似内容时,不要用“哪个域名返回404”来区分用途,而要用可核对的响应证据来区分。具体做法是:让每个域名对“自己不该承担的角色”返回404,同时让“自己该承担的角色”返回200并带明确的内容标识。这样,404状态码就成了用途边界,而不是故障信号。
假设你有一个主站A、一个活动站B、一个历史归档站C,三者有大量相似的产品介绍页。直觉上你会让所有域名都返回200,认为“内容都在,用户都能看”。但这样做的结果是:你无法从响应层面判断某个URL到底属于哪个域名的职责范围。搜索引擎抓取时,会看到三个域名都有相似内容,却缺少明确的用途信号。
反过来,如果你让B站只保留活动页、C站只保留归档页,其余路径统一返回404,那么404状态码就成了用途声明:该域名不承担这个路径的职责。注意,这里的404不是“页面丢失”,而是“该域名下不存在这个资源”。这个区别是后续所有判断的基础。
假设你有三个域名:www.example.com、promo.example.com、archive.example.com。产品页/product/123在三个域名下都能访问,内容几乎一样。你希望主站承担长期产品展示,活动站只承担限时活动页,归档站只承担历史版本。
你可以这样设置:
www.example.com/product/123 返回200,页面标题和结构化数据标明“当前产品页”。promo.example.com/product/123 返回404,因为活动站不承担产品页职责;活动站只保留/campaign/xxx路径返回200。archive.example.com/product/123 返回200,但页面明确标注“历史版本”,并链接回主站当前页。这个设置的关键动作是:主动让活动站对产品页返回404。执行后,你可以用抓取工具分别请求三个域名下的同一路径,观察状态码是否与预期用途一致。如果活动站意外返回200,说明用途边界没有落实,下一步应检查该域名的路由配置或重写规则,而不是直接去改内容。
404状态码本身不区分意图。你需要结合以下证据判断:
这里有一个重要限制:robots.txt的抓取限制不等于索引移除。如果你用robots.txt禁止抓取活动站的产品页,但该页仍返回200,搜索引擎可能仍然保留该URL的索引。404状态码和robots.txt解决的是不同问题,不能互相替代。
你可以按以下顺序操作,每一步都留下可核对的证据:
/product/*,活动站承担/campaign/*,归档站承担/archive/*。promo.example.com/product/123应得到404,请求promo.example.com/campaign/abc应得到200。这个步骤的结果会直接影响下一步:如果活动站的产品页成功返回404,你就可以放心地在活动站的站点地图中排除产品页,并观察搜索引擎是否逐步减少对活动站产品页的抓取。如果仍然被抓取,需要检查是否有外部链接指向该URL,而不是反复修改404页面内容。
当多个域名承载相似内容时,你还有另一个选择:用301重定向把活动站的产品页指向主站产品页。这两种做法成立的条件不同:
注意,HTTPS不保证安全无漏洞或排名,它只是传输层协议。无论你选择404还是301,都需要单独检查每个域名的证书和协议配置,不能因为启用了HTTPS就认为用途说明已经完成。另外,不同搜索引擎对404和301的处理节奏不同,须分别核查,不要用同一个域名的表现推断另一个域名。
最终,判断标准不是“哪个状态码更好”,而是“哪个状态码能让你的用途声明可被核对”。如果活动站的产品页返回404,而活动页返回200,且站点地图与内部链接一致,那么你就有了一个可重复验证的用途边界。下一步的抓取和索引观察,才有可靠的前提。