robots协议下多个域名承载相似内容时怎样说明各自用途

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

robots协议下多个域名承载相似内容时怎样说明各自用途

先给结论:不要试图用一份 robots.txt 同时“管住”多个域名。每个域名各自部署 robots.txt,并在每个文件里用注释和分组明确写出该域名的角色——主站、镜像、测试环境还是归档站——再配合 canonical 与站点地图把用途信号对齐。只有在两个域名确实服务不同人群、且你能分别维护各自内容时,才值得保留双域名;否则应尽早选定一个主域名并让其余域名退出索引。

先判断你是“分角色保留”还是“合并退出”

两种条件下的选择完全不同,判断依据不是域名数量,而是内容是否真的需要两个入口。

区分方法:把两个域名各自抓取到的页面标题和正文做抽样对比。如果同一批页面在两个域名上几乎逐字相同、且没有指向不同受众,就属于条件B;如果同一路径下内容、语言或访问权限明显不同,才属于条件A。

条件A:保留双域名时,robots.txt 里写清角色

robots.txt 本身只表达抓取许可,不能表达“这个域名是镜像”这类语义。所以角色说明要分两层落地:文件内用注释写给人看,页面层用 canonical 写给搜索引擎看。

  1. 在每个域名的根目录部署独立的 robots.txt,不要用 301 把 /robots.txt 指向另一个域名,否则爬虫读到的规则属于主站,辅助域名的限制会失效。
  2. 在文件顶部用注释写明本域名用途,例如 # 用途:主站,唯一索引入口 或 # 用途:合作方镜像,禁止索引。注释不影响抓取,但能让后续接手的人不再猜。
  3. 辅助域名若不应被索引,用 Disallow: / 配合页面级 noindex。注意:Disallow 会阻止爬虫读取页面,也就读不到 noindex,两者叠用时要先放开抓取、让 noindex 生效,再收紧抓取。
  4. 主域名在页面 <head> 里用 canonical 指向自身,辅助域名指向主域名对应页面,让“谁是正本”有明确指向。

实施动作:先改辅助域名的页面级 noindex,观察该域名在索引中的表现;确认它逐步退出后,再把 robots.txt 收紧为 Disallow: /。顺序反了会导致页面卡在索引里,因为爬虫被挡住、看不到移除指令。

条件B:合并退出时,robots.txt 不是移除手段

如果两个域名内容重复且你决定只保留一个,正确的动作是 301 跳转,而不是在 robots.txt 里禁止抓取。robots.txt 的抓取限制不等于可靠的索引移除:被禁止抓取的 URL 仍可能因为外链、历史记录而留在索引里,只是内容无法更新。

可以这样安排:

用一份短清单核对“用途说明”是否真的生效

假设你有 example.com(主)和 example-mirror.com(辅),预期是主站被索引、辅站退出。可以按下面顺序核对,而不是只看某一项统计归零就下结论。

  1. 分别访问两个域名的 /robots.txt,确认返回的是各自文件,而不是同一份被重定向的内容。
  2. 抽样几个辅站页面,确认 noindex 与 canonical 都指向主站对应 URL。
  3. 用抓取工具模拟访问辅站页面,确认爬虫能读到 noindex,而不是被 robots 挡在门外。
  4. 观察辅站被抓取量下降时,同时检查外链是否仍在增长——抓取量归零也可能是爬虫暂时降低优先级,不单独证明处理正确。

结果如何影响下一步:如果辅站页面能被抓取且带 noindex,就继续等待退出,不必急着加 Disallow;如果爬虫根本读不到页面,说明抓取被提前挡住,应先放开再观察。HTTPS 在这里不解决用途混淆问题,它只保证传输加密,不代表内容不会被重复索引。

容易踩的例外:子域名与多语言站

子域名(如 blog.example.com)和多语言站(如 example.com/en/)常被误当成“多个域名承载相似内容”,但它们通常属于同一站点的不同分区,用途本就不同。这类情况下不需要让子域名退出,而是用各自的 robots.txt 分组管理抓取范围,并用 hreflang 或 canonical 说明语言与正本关系。真正需要“说明各自用途”的,是那些内容高度重叠、却各自拥有独立根目录的域名。不同搜索引擎对 robots.txt 指令和 noindex 的处理细节须分别核查,不要假设一套写法在所有引擎上表现一致。

图1 图2

nginx