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: /挡住抓取,但搜索结果里仍能看到它的旧标题和摘要。这时有两种解释需要分开:
- 解释一:抓取限制生效了,但旧索引尚未更新。robots.txt管的是抓取,不是移除已有索引。已经建立索引的URL不会因为一条Disallow就自动消失,抓取方可能仍保留历史快照,直到重新抓取发现内容不可用,或收到明确的移除信号。
- 解释二:屏蔽范围写错了,实际抓取未被挡住。比如规则写在了错误的User-agent分组下、路径大小写不匹配、或某个子目录被更靠前的Allow覆盖,导致抓取仍能进入。
这两种解释对应的动作完全不同。前者要做的是补移除信号并等待,后者要先修规则。区分它们的证据是:查看服务器访问日志里目标爬虫对旧域名的请求是否真的减少,以及用抓取测试工具确认某条具体URL在规则下是允许还是禁止。如果日志显示请求已大幅下降,说明规则生效,剩下的是索引更新问题;如果请求照旧,说明规则没起作用,先别急着谈移除。
两个域名、三种用途,规则写法不同
多个域名承载相似内容时,常见用途可以归为三类,每类对应不同的robots.txt取向:
- 主站:希望被完整抓取和索引。规则应尽量少限制,只挡后台、搜索结果页、参数组合等无价值路径。可以在文件顶部用注释写明这是主站,便于日后交接时快速识别。
- 旧站或过渡站:仍然有价值的部分(比如某些栏目、文档、下载资源)需要保留,其余整体退出。做法是按目录分组:保留的目录Allow,其余Disallow,并在注释里写清保留原因和计划。
- 纯退出站:不再承担任何展示作用。可以整体Disallow,但要清楚这只是停止抓取,不等于移除索引;如果目标是让旧URL从结果中消失,需要配合其他移除手段,并确认没有其他域名在引用它。
关键动作是:在每个域名的robots.txt顶部用注释写一行用途说明,例如“本域名为主站,允许全站抓取”或“本域名为旧站,仅保留/docs/,其余退出”。这个动作的结果是,后续任何人打开文件都能立刻判断该域名的角色,避免把主站规则误套到退出站上。下一步再检查各域名的sitemap是否与这个定位一致——如果旧站已经整体退出,却仍在sitemap里列出全站URL,两个信号就自相矛盾。
用证据区分“用途写清了”还是“只是复制了”
判断规则是否真的表达了用途,可以看三组证据:
- 规则差异:主站、旧站、退出站的robots.txt内容是否明显不同?如果三个文件逐字相同,说明没有按用途区分。
- 日志分布:抓取请求是否集中在你想保留的目录?如果退出站的请求量没有下降,说明屏蔽没生效或爬虫尚未重访。
- 索引状态:在结果中检索各域名的代表性URL,看呈现的是当前用途还是历史内容。注意,索引变化通常滞后于抓取变化,短期内看到旧内容不代表规则写错。
这里要提醒一个边界:robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。所以“用途说明”解决的是抓取方的理解问题,不能替代移除流程。假设某旧站有100个URL,你只保留其中10个目录,其余Disallow。如果一段时间后日志显示保留目录的抓取正常、其余目录请求归零,这支持“规则按用途生效”的判断;但请求归零也可能只是因为爬虫降低了整体访问频率,不能单独作为规则正确的证明,需要结合抓取测试和索引状态一起看。
落地时的检查顺序
按下面顺序处理,可以减少返工:
- 列出所有承载相似内容的域名,给每个域名标注用途:主站、保留部分、整体退出。
- 为每个域名单独写robots.txt,用注释写明用途,用分组区分保留与退出路径。
- 确认每个域名的sitemap只包含该域名当前希望被抓取的部分,与robots.txt定位一致。
- 用抓取测试工具验证若干代表性URL,确认允许/禁止结果符合预期。
- 观察访问日志中目标爬虫的请求分布,判断规则是否按预期生效;如果未生效,回到第2步检查分组和路径。
如果旧域名涉及旧合作关系,退出前还要确认对方是否仍在引用该域名;只要外部引用存在,单纯靠robots.txt无法让相似内容停止被访问,需要先处理引用关系再谈退出。