站点运营

站点运营:robots.txt 与 meta robots 自查,别让两套指令互相打架

robots.txt 管抓取,meta robots 管索引,两者用错会互相抵消:屏蔽后的页面读不到 noindex,想删的删不掉,想放行的又被挡住。本文梳理常见的几组冲突、写指令前该确认的目的,以及一份可照做的自查清单和验证方法。

站点运营

站点运营:robots.txt 与 meta robots 自查,别让两套指令互相打架

经常看到这样的操作:先在 robots.txt 里把一批地址 Disallow 掉,再在页面里加一句 noindex,觉得是上了双保险。实际结果是两个指令互相抵消——页面被禁止抓取,蜘蛛也就读不到那句 noindex,想清掉的内容一直留在索引里;反过来,有些该正常放行的页面被顺带挡住,长期抓不到更新。

先分清两套指令管什么

两套指令常常被混着用,但职责完全不同:

  • robots.txt 管的是抓取范围。它告诉蜘蛛哪些路径可以来、哪些不用来。它是一份约定文件,本身并不直接控制索引结果。
  • meta robots 与 X-Robots-Tag 管的是索引与展示。noindex、nofollow、noarchive 这类指令写在页面里或响应头上,蜘蛛必须先抓到页面、读到指令,才会执行。

记住这条顺序就能避开大部分错误:抓取在前,索引在后。抓不到的页面,索引指令也就无从生效。

常见的几组冲突

想删除,却先屏蔽

把已下线或含内部信息的页面直接 Disallow,是常见的误操作。更稳妥的做法是先允许抓取、加上 noindex,等页面从索引里消失之后,再考虑是否屏蔽。顺序反了,页面会长期卡在索引里。

连带屏蔽了 CSS 和 JS

有些站点为了省抓取量,把 /css/、/js/、/assets/ 整目录屏蔽。但蜘蛛需要这些资源才能渲染页面,屏蔽之后拿到的可能是一份不完整的 HTML,正文、内链、结构化数据都可能判读错误。

目录规则误伤整站

Disallow 后面多加一个字符、少写一个斜杠,效果可能完全不同。比如用通配符挡参数时,很可能顺手挡掉分页或正常栏目页。写通配符和结尾符时,建议先在小范围测试,确认无误再全量生效。

测试环境的指令带到线上

预发环境为了防止被索引,通常会整站加 X-Robots-Tag: noindex 或者全局 Disallow。上线时如果忘了清理,正式站点就会长时间不进索引。发布流程里最好把这一步写成固定检查项。

写指令之前,先确认目的

  1. 只是不想让它抓,比如后台、搜索结果页、重复参数页:用 robots.txt。
  2. 不想让它出现在索引里:允许抓取,再加 noindex。
  3. 两样都不想要:先 noindex 等索引清空,再补 Disallow,分两步走。
  4. 想保留抓取但不传递权重:用 nofollow 属性,而不是 Disallow。

一份可照做的自查清单

  1. 打开 /robots.txt,逐条核对每条规则对应的目录是否还在使用。
  2. 确认没有屏蔽 CSS、JS、图片等渲染必需资源。
  3. 搜索全站模板,检查是否有残留的 noindex 或 X-Robots-Tag。
  4. 确认 robots.txt 与页面 meta robots 没有对同一路径给出相反指令。
  5. 检查各子域名、测试域名是否也有独立的 robots.txt。
  6. 用日志确认蜘蛛对 robots.txt 的访问频率,是否长期拿到旧版本。

改完之后怎么确认

修改 robots.txt 后,蜘蛛重新读取需要时间,这期间可能仍按旧规则抓取,属于正常现象,不必反复改动文件。建议改完记录日期,过一段时间再从服务器日志里观察目标路径的抓取变化,以及索引状态是否按预期更新。如果只是想让某个页面退出索引,重点盯的是索引结果,而不是抓取次数。

robots.txt 不是万能的“低调收尾”工具。需要索引的页面让它抓,需要下线的页面用 noindex 让它读,把这两件事分清楚,比堆规则更有效。