先给结论:不要试图让百度把多个域名都当成主站收录,而是为每个域名写一份可被爬虫读取的用途说明,并用 canonical、robots.txt 和站点地图把这份说明落到具体 URL 上。如果多个域名内容高度相似,百度通常只会保留其中一个作为搜索结果,其余域名即使被抓取也可能不进入索引。你需要做的是主动决定哪个域名承担搜索流量,其余域名承担跳转、测试、品牌保护或历史存档,并让每个域名的技术信号与这个定位一致。
处理之前,先拿一张纸或一个表格,把每个域名按下面三类归类。分类不同,后续动作完全不同。
判断依据不是你的主观意图,而是百度蜘蛛实际抓到的页面。你可以用百度搜索资源平台的抓取诊断工具,分别对两个域名的同一路径发起抓取,对比返回的 HTML 是否只差域名。如果只差域名,就属于第一类。
用途说明不是给用户看的文案,而是给搜索引擎和后来接手的人看的。它至少要回答三个问题:这个域名主要提供什么、哪些路径允许被抓取、哪些路径应该指向主站。
具体动作:在每个域名的根目录下放一个 robots.txt,用注释写明域名用途,用 Disallow 限制不应被抓取的路径。例如,测试域名可以写 Disallow: /,但要注意:robots.txt 的抓取限制不等于可靠的索引移除。如果测试域名已经有页面被百度收录,仅靠 robots.txt 不会让它们从搜索结果中消失,还需要返回 404 或 410 状态码,或使用百度搜索资源平台的移除工具。
对于需要保留但不应参与排名的镜像域名,更稳妥的做法是在每个页面的 <head> 中加入指向主站对应 URL 的 canonical 标签,同时在服务器层面做 301 跳转。canonical 是建议,301 是更强制的信号,两者同时使用可以降低百度选错主站的概率。
很多人会把多个域名的 URL 放进同一个站点地图,然后提交到百度搜索资源平台。这会让百度难以判断哪个域名是主站。正确做法是每个域名单独生成站点地图,只包含该域名下希望被收录的 URL,并在站点地图的注释或文件名中体现域名用途。
假设你有一个主域名 www.example.com 和一个品牌保护域名 example-brand.com,后者只做 301 跳转。那么 example-brand.com 的站点地图可以只包含首页,并且首页 canonical 指向主域名首页。提交后,观察百度搜索资源平台中两个域名的索引量变化。如果品牌保护域名的索引量下降而主域名保持稳定,说明处理方向正确。如果两个域名的索引量同时下降,需要检查 301 是否配置正确,以及 canonical 是否指向了可访问的 URL。
站点地图不保证收录,它只是告诉百度哪些 URL 存在。真正决定是否收录的,是页面内容质量、抓取配额和百度对重复内容的判断。因此,不要因为提交了站点地图就停止检查页面本身。
你已经尝试过常规做法仍未解决,很可能是因为把抓取频次当成了索引状态。百度蜘蛛频繁抓取某个域名,不代表这个域名下的页面会被收录。抓取量归零也不代表处理正确,可能是服务器屏蔽、robots.txt 误拦、百度调整抓取配额,或者该域名本身没有值得抓取的新内容。
要区分这两者,可以做一个短假设例子。假设你有三个域名 A、B、C,内容相似。你在 B 和 C 上加了 canonical 指向 A,并提交了各自的站点地图。一周后,B 的抓取频次下降,C 的抓取频次不变,A 的索引量没有变化。这时不能直接判断 B 的处理生效了,因为抓取频次下降还可能是因为 B 没有更新内容、服务器响应变慢,或者百度临时调整了该域名的抓取预算。下一步应该分别检查 B 的服务器日志中百度蜘蛛的返回码,以及 B 的页面是否仍然返回 200 状态码。如果 B 的页面返回 200 且 canonical 正确,但抓取频次下降,可以继续观察;如果 B 的页面返回 404,则需要先恢复可访问性,再重新提交。
最后一步是让这份说明不只存在于你的脑子里。在每个域名的根目录放一个 README-seo.txt,或者在内部文档中记录以下内容:域名用途、主站对应关系、canonical 规则、robots.txt 规则、站点地图地址、最后核查日期。这样当开发人员或后续接手的人需要改动时,不会因为不知道某个域名的定位而误删 canonical 或放开 robots.txt。
如果你现在手里只有一个页面或一份资料,可以先从它开始:确认它属于哪个域名,检查该域名的 canonical 和 robots.txt 是否与用途一致,然后单独提交该域名的站点地图。动作的结果会直接告诉你下一步是继续观察索引量,还是先修复服务器返回码。只有把每个域名的用途落到具体 URL 和技术信号上,多个域名承载相似内容才不会变成互相争夺收录的负担。