站点运营

站点运营:robots.txt 复核,别让抓取规则把重要目录挡在门外

robots.txt 是爬虫进入站点的第一道门禁,写错一行可能挡住整站或让后台暴露。本文梳理访问状态、User-agent 匹配、Disallow 与 Allow 顺序、通配符写法、与 noindex 的分工,以及上线前后的复核清单,帮助站点运营者减少抓取误伤。

站点运营

站点运营:robots.txt 复核,别让抓取规则把重要目录挡在门外

robots.txt 是站点给爬虫看的第一份说明文件。它不负责收录,也不负责排名,只表达“哪些路径希望被抓取、哪些不希望”。一旦写错,轻则浪费抓取额度,重则让重要栏目长期不被发现。做站点运营时,把它当成门禁规则定期复核,比事后从日志里找原因更省事。

先看文件本身能不能正常访问

在浏览器或命令行访问 https://example.com/robots.txt,确认返回状态码是 200,内容不是空白、不是首页 HTML、也不是服务器默认页。如果返回 404,理论上爬虫会认为没有限制,但很多站长会误以为已经屏蔽。若返回 403 或 5xx,不同爬虫处理方式不一致,最稳妥的做法是先修好访问,再谈规则。

User-agent 匹配:别把全局规则写成只对某个爬虫生效

robots.txt 按 User-agent 分组。常见的错误是:想屏蔽所有爬虫,却只写了 Baiduspider 或 Googlebot;或者想放行搜索蜘蛛,却在 User-agent: * 下写了过宽的 Disallow。复核时把每一组规则对应到实际爬虫名称,确认没有把“只针对某个工具”的规则误写成全局。

Disallow 与 Allow 的顺序和优先级

同一 User-agent 组内,通常更具体的路径规则优先,但不同爬虫实现有差异。不要依赖“后面的规则一定覆盖前面”这种假设。如果既要屏蔽目录又要放行其中某个子目录,建议把 Allow 写在前面或单独分组,并实际测试。例如屏蔽 /search/ 但放行 /search/help/,就需要写清楚,而不是只写一条 Disallow: /search/ 然后期待例外自动生效。

通配符和结尾符不要凭感觉写

* 表示任意字符,$ 表示路径结尾。写 Disallow: /*.pdf$ 可以屏蔽所有 PDF 链接,但要确认是否真的想屏蔽全部 PDF。写 Disallow: /admin 会同时影响 /admin、/admin/ 以及 /admin-notes 这类前缀相同的路径。如果只想限制目录,通常写成 Disallow: /admin/ 更稳。规则越宽,越容易误伤正常栏目和分页。

robots.txt 不能替代 noindex

robots.txt 只控制抓取,不控制索引。如果页面已经被抓取并索引,事后加 Disallow 通常不会让它从搜索结果消失,反而可能因为爬虫看不到页面上的 noindex 而无法更新状态。需要页面级移除时,应优先用 noindex,并确保爬虫能访问该页面。反过来,如果只是不想浪费抓取额度,才用 robots.txt 屏蔽。

一个常见误区是:用 robots.txt 屏蔽后台、测试目录和参数页后,就以为它们不会出现在搜索结果里。实际上,只要外部有链接指向,这些 URL 仍可能被索引。抓取控制和索引控制要分开处理。

和站点地图、canonical 的配合

robots.txt 里可以声明 Sitemap 地址,方便爬虫发现。但如果 Sitemap 中的 URL 又被 robots.txt 屏蔽,就会产生矛盾信号。同样,canonical 指向的地址也不应被 robots.txt 挡住,否则爬虫无法读取确认。复核时把 robots.txt、Sitemap、canonical、noindex 放在一起看,确认没有互相打架。

上线前后的复核清单

  1. 直接访问 /robots.txt,确认返回 200 且内容完整。
  2. 逐条检查 User-agent 分组,确认没有把全局规则误写进单爬虫组。
  3. 检查 Disallow 路径是否过宽,是否误伤栏目、分页、静态资源。
  4. 确认后台、测试环境、临时目录确实被屏蔽,且没有暴露敏感路径。
  5. 确认重要栏目和 Sitemap 地址没有被误屏蔽。
  6. 检查 Sitemap 声明地址是否正确、可访问。
  7. 用不同 User-agent 测试抓取结果,或查看服务器日志中的蜘蛛访问记录。
  8. 改版、换域名、调整目录后,重新复核一遍。

日常监控与改动习惯

把 robots.txt 纳入变更记录:谁改的、改了什么、为什么改。上线后观察蜘蛛日志,看重要目录的抓取频次是否异常下降。如果站点使用蜘蛛池或外部引导方式增加 URL 发现机会,更要先确认 robots.txt 没有把目标路径挡在门外,否则引导来的爬虫也只能空手而归。每次修改后,用抓取测试工具或日志验证,不要只靠肉眼觉得“应该没问题”。

最后提醒一句:robots.txt 是公开文件,任何人都能查看。不要在注释里写内部路径、账号规则或临时密钥。运营上的小改动,先小范围测试,再全量生效。