robots.txt 是一个放在根目录下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些先不要抓。它不复杂,但因为改动成本低、影响范围大,经常成为站点上线或改版时最容易出问题的一环:多写一行斜杠,可能挡住整站;少写一个目录,可能让后台或测试环境被反复访问。
下面这份自查思路,不追求覆盖所有细节,更适合在每次结构变动后走一遍,确认规则和实际情况对得上。
先确认它到底是什么角色
robots.txt 是建议,不是强制拦截。大部分正规搜索引擎会遵守,但不会因此阻止其他程序访问。它管的是能不能抓,不是能不能被收录:一个被 Disallow 的页面,如果被外部链接引用,仍有机会以无摘要的形式出现在结果里。
所以想让某个页面彻底不出现,通常的做法是:允许抓取,同时在页面上加 noindex;或者用登录验证把它挡在外面。用 robots.txt 直接屏蔽,反而可能让 noindex 没机会被读到。
语法和匹配规则里最容易出错的地方
路径匹配是前缀匹配
Disallow: /news 会同时挡住 /news、/newslist、/news-2024 这类以 /news 开头的地址,而不是只挡目录。想只挡目录本身,通常写成 Disallow: /news/,并注意是否还有其他路径共享这个前缀。
通配符要克制使用
星号可以匹配任意字符,美元符号表示结尾,用得好能压缩规则数量,用得太随意会让规则难以复核。比如屏蔽带参数的地址时,先确认这个参数是不是真的有重复抓取的问题,再决定是全部屏蔽还是只屏蔽特定组合。
Allow 与 Disallow 的优先关系
当两条规则长度不同时,一般以更具体的那条为准。常见的写法是用 Disallow 挡住整个目录,再用 Allow 放行其中某个子目录,这种组合要写清顺序和路径,改完最好用抓取测试工具验证一次实际结果。
一份可执行的自查清单
- 访问域名根目录的 robots.txt,确认返回的是纯文本内容,而不是 CDN 或 WAF 返回的错误页、登录页或 403。
- 确认没有把整站写进 Disallow,改版期间临时屏蔽的规则是否已经撤掉。
- 逐个核对被屏蔽的目录:后台、用户中心、搜索参数页、打印页、筛选页、测试目录,这些是否确实不该被抓。
- 检查是否误伤了 CSS、JS、图片等静态资源所在的路径,资源被挡住会影响页面渲染判断。
- 确认规则里声明的站点地图地址是可访问的绝对地址,且指向的内容是有效的。
- 翻一段时间的访问日志,看被挡的路径里有没有本该被抓的栏目页或详情页。
- 把文件纳入版本管理或备份,避免误删之后无处比对。
和其他机制的分工
- robots.txt:控制抓取范围,减少无效请求。
- noindex:控制是否进入索引,需要页面被抓到才生效。
- 站点地图:主动告知有哪些地址值得抓,和 robots.txt 配合使用更顺。
- canonical:处理同一内容多个地址时的归并问题。
抓取频率方面,部分爬虫支持在文件里写抓取间隔,但支持度有限,实际调速更多还是通过服务器响应速度、站点日志观察和搜索平台的相应设置来完成。
改动时的节奏
建议把 robots.txt 的修改和站点结构变动绑在一起:新增栏目、调整目录、合并频道、上线新模板,都顺手看一遍。改动前一天记录当前内容,改完先在小范围验证,再观察一两周日志,确认抓取量没有异常下滑。
规则文件越短越好,但每一条都要能说清楚为什么要写。写不清的那条,往往就是后来的麻烦。