站点运营

站点运营:robots.txt 自查,把抓取范围和规则边界写清楚

robots.txt 是站点与搜索引擎爬虫沟通抓取范围的第一道说明文件,写错容易挡住正常抓取或留下不该开放的路径。本文梳理语法要点、常见误区和一份可执行的自查清单,帮你在改版、上线新栏目或迁移域名前后,把规则边界确认一遍,减少反复调试的成本。

站点运营

站点运营:robots.txt 自查,把抓取范围和规则边界写清楚

robots.txt 是一个放在根目录下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些先不要抓。它不复杂,但因为改动成本低、影响范围大,经常成为站点上线或改版时最容易出问题的一环:多写一行斜杠,可能挡住整站;少写一个目录,可能让后台或测试环境被反复访问。

下面这份自查思路,不追求覆盖所有细节,更适合在每次结构变动后走一遍,确认规则和实际情况对得上。

先确认它到底是什么角色

robots.txt 是建议,不是强制拦截。大部分正规搜索引擎会遵守,但不会因此阻止其他程序访问。它管的是能不能抓,不是能不能被收录:一个被 Disallow 的页面,如果被外部链接引用,仍有机会以无摘要的形式出现在结果里。

所以想让某个页面彻底不出现,通常的做法是:允许抓取,同时在页面上加 noindex;或者用登录验证把它挡在外面。用 robots.txt 直接屏蔽,反而可能让 noindex 没机会被读到。

语法和匹配规则里最容易出错的地方

路径匹配是前缀匹配

Disallow: /news 会同时挡住 /news、/newslist、/news-2024 这类以 /news 开头的地址,而不是只挡目录。想只挡目录本身,通常写成 Disallow: /news/,并注意是否还有其他路径共享这个前缀。

通配符要克制使用

星号可以匹配任意字符,美元符号表示结尾,用得好能压缩规则数量,用得太随意会让规则难以复核。比如屏蔽带参数的地址时,先确认这个参数是不是真的有重复抓取的问题,再决定是全部屏蔽还是只屏蔽特定组合。

Allow 与 Disallow 的优先关系

当两条规则长度不同时,一般以更具体的那条为准。常见的写法是用 Disallow 挡住整个目录,再用 Allow 放行其中某个子目录,这种组合要写清顺序和路径,改完最好用抓取测试工具验证一次实际结果。

一份可执行的自查清单

  1. 访问域名根目录的 robots.txt,确认返回的是纯文本内容,而不是 CDN 或 WAF 返回的错误页、登录页或 403。
  2. 确认没有把整站写进 Disallow,改版期间临时屏蔽的规则是否已经撤掉。
  3. 逐个核对被屏蔽的目录:后台、用户中心、搜索参数页、打印页、筛选页、测试目录,这些是否确实不该被抓。
  4. 检查是否误伤了 CSS、JS、图片等静态资源所在的路径,资源被挡住会影响页面渲染判断。
  5. 确认规则里声明的站点地图地址是可访问的绝对地址,且指向的内容是有效的。
  6. 翻一段时间的访问日志,看被挡的路径里有没有本该被抓的栏目页或详情页。
  7. 把文件纳入版本管理或备份,避免误删之后无处比对。

和其他机制的分工

  • robots.txt:控制抓取范围,减少无效请求。
  • noindex:控制是否进入索引,需要页面被抓到才生效。
  • 站点地图:主动告知有哪些地址值得抓,和 robots.txt 配合使用更顺。
  • canonical:处理同一内容多个地址时的归并问题。

抓取频率方面,部分爬虫支持在文件里写抓取间隔,但支持度有限,实际调速更多还是通过服务器响应速度、站点日志观察和搜索平台的相应设置来完成。

改动时的节奏

建议把 robots.txt 的修改和站点结构变动绑在一起:新增栏目、调整目录、合并频道、上线新模板,都顺手看一遍。改动前一天记录当前内容,改完先在小范围验证,再观察一两周日志,确认抓取量没有异常下滑。

规则文件越短越好,但每一条都要能说清楚为什么要写。写不清的那条,往往就是后来的麻烦。