robots.txt规则,多个域名承载相似内容时怎样说明各自用途

📍 WDQWDWQD987AAAAA:136.243.57.164
📱 Mozilla/5.0 (compatible; QlyzeBot/1.0; +https://app.qlyze.io/bot)
🔗 /7da221fa17f6.html
📄

robots.txt规则,多个域名承载相似内容时怎样说明各自用途

核心做法是:把每个域名在robots.txt里当作独立站点对待,先明确它该被完整抓取、只保留特定目录,还是整体退出,再用注释和分组把这些决定写清楚。相似内容本身不是问题,问题是你没有告诉抓取方“这个域名为什么存在、哪些路径值得留下”。如果只是复制一份robots.txt到所有域名,抓取方会得到一模一样的许可信号,无法区分主站、旧站和过渡站。

先看一个矛盾现象:屏蔽了却还在出现

旧域名已经用Disallow: /挡住抓取,但搜索结果里仍能看到它的旧标题和摘要。这时有两种解释需要分开:

这两种解释对应的动作完全不同。前者要做的是补移除信号并等待,后者要先修规则。区分它们的证据是:查看服务器访问日志里目标爬虫对旧域名的请求是否真的减少,以及用抓取测试工具确认某条具体URL在规则下是允许还是禁止。如果日志显示请求已大幅下降,说明规则生效,剩下的是索引更新问题;如果请求照旧,说明规则没起作用,先别急着谈移除。

两个域名、三种用途,规则写法不同

多个域名承载相似内容时,常见用途可以归为三类,每类对应不同的robots.txt取向:

  1. 主站:希望被完整抓取和索引。规则应尽量少限制,只挡后台、搜索结果页、参数组合等无价值路径。可以在文件顶部用注释写明这是主站,便于日后交接时快速识别。
  2. 旧站或过渡站:仍然有价值的部分(比如某些栏目、文档、下载资源)需要保留,其余整体退出。做法是按目录分组:保留的目录Allow,其余Disallow,并在注释里写清保留原因和计划。
  3. 纯退出站:不再承担任何展示作用。可以整体Disallow,但要清楚这只是停止抓取,不等于移除索引;如果目标是让旧URL从结果中消失,需要配合其他移除手段,并确认没有其他域名在引用它。

关键动作是:在每个域名的robots.txt顶部用注释写一行用途说明,例如“本域名为主站,允许全站抓取”或“本域名为旧站,仅保留/docs/,其余退出”。这个动作的结果是,后续任何人打开文件都能立刻判断该域名的角色,避免把主站规则误套到退出站上。下一步再检查各域名的sitemap是否与这个定位一致——如果旧站已经整体退出,却仍在sitemap里列出全站URL,两个信号就自相矛盾。

用证据区分“用途写清了”还是“只是复制了”

判断规则是否真的表达了用途,可以看三组证据:

这里要提醒一个边界:robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。所以“用途说明”解决的是抓取方的理解问题,不能替代移除流程。假设某旧站有100个URL,你只保留其中10个目录,其余Disallow。如果一段时间后日志显示保留目录的抓取正常、其余目录请求归零,这支持“规则按用途生效”的判断;但请求归零也可能只是因为爬虫降低了整体访问频率,不能单独作为规则正确的证明,需要结合抓取测试和索引状态一起看。

落地时的检查顺序

按下面顺序处理,可以减少返工:

  1. 列出所有承载相似内容的域名,给每个域名标注用途:主站、保留部分、整体退出。
  2. 为每个域名单独写robots.txt,用注释写明用途,用分组区分保留与退出路径。
  3. 确认每个域名的sitemap只包含该域名当前希望被抓取的部分,与robots.txt定位一致。
  4. 用抓取测试工具验证若干代表性URL,确认允许/禁止结果符合预期。
  5. 观察访问日志中目标爬虫的请求分布,判断规则是否按预期生效;如果未生效,回到第2步检查分组和路径。

如果旧域名涉及旧合作关系,退出前还要确认对方是否仍在引用该域名;只要外部引用存在,单纯靠robots.txt无法让相似内容停止被访问,需要先处理引用关系再谈退出。

图1 图2

nginx