很多站长都遇到过这种情况:网站上线一两个月,文章也发了不少,可百度就是没收录,或者用 site 命令一查只有孤零零的首页。折腾半天才发现,问题出在一份小小的 robots.txt 文件上——它把百度蜘蛛挡在了门外。
robots.txt 本质上是网站给搜索引擎爬虫看的“门禁说明”,告诉对方哪些目录可以进、哪些不能进。它本身不是硬性封锁(爬虫理论上可以不遵守),但百度这类正规搜索引擎都会尊重这份文件。也正因如此,一旦规则写错,最直接的后果就是整站抓取受阻、收录停滞。
先说最常见的误屏蔽。规则里 Disallow 表示“禁止抓取”,很多人图省事写成 Disallow: /,这一条等于把整个站点都关上了,百度自然抓不到任何内容。另一条高频错误是 User-agent 写错,比如想针对百度蜘蛛设规则,却把 Baiduspider 拼错,或者大小写混乱,导致规则根本没匹配上。正确做法是:先明确放行全站(Allow: /),再单独屏蔽真正不需要抓取的路径,比如后台 /wp-admin/、重复内容目录、带参数的搜索页等。
顺带提一句通配符。robots 里可以用 匹配任意字符,比如 Disallow: /?* 屏蔽所有带参数的链接。但通配符用得太宽泛,很容易误伤正常内容页,建议只在你明确知道参数的作用时才用,宁可少封几条,也不要一刀切。多数新手站点其实只需要“放行全站、屏蔽后台”这一条核心规则,规则越简单越不容易出错。
写完之后一定要验证,而不是凭感觉上线。百度搜索资源平台里提供了 robots 检测工具和抓取诊断两个功能。先在检测工具里输入域名,看百度能否正常访问你的页面;再用抓取诊断提交几个核心 URL,如果返回“禁止访问”,说明规则有问题,立刻回去改。同时建议把网站地图写进 robots,格式是单独一行 Sitemap: 你的完整sitemap地址,这样百度能顺着地图发现更多页面。
还有几点容易被忽略。一是百度区分 PC 蜘蛛和移动蜘蛛,分别对应 Baiduspider 和 Baiduspider-mobile,绝大多数站点写一条通用规则就够了,没必要分两条,否则多写反而容易出错。二是如果你用的是常见建站程序,安装后默认会生成一份 robots,里面可能包含一些你并不需要屏蔽的项,上线前花两分钟看一眼,比事后排查省事得多。最后记住,robots 只是建议而非锁,内容能不能被收录,最终还是取决于页面本身的质量和可访问性,robots 只要别帮倒忙就行。
顺便说一个排查顺序。当你怀疑是 robots 导致不收录时,不要上来就大改,先按顺序排查:第一,直接在浏览器打开 域名/robots.txt,确认文件本身能正常访问;第二,用站长工具的抓取诊断抓几个核心 URL,看返回状态是不是正常;第三,检查是不是服务器返回了 503 或连接超时,而不是 robots 本身的问题。把现场证据留好,比凭感觉乱改更靠谱,也避免你改了一圈发现根因根本不在 robots 上。
小结:robots.txt 是网站与搜索引擎之间的第一道门,规则宁少勿滥,正式上线前务必用百度官方工具验证一遍。