先说个丢人的事。
前年我给网站开了个新栏目,写了二十多篇文章,兴冲冲等着被收录。等了一个月,没动静。两个月,还是没动静。我一度以为是自己内容写得烂,百度看不上。
直到有一天我在百度搜索资源平台里做抓取诊断,看到那个栏目下的页面,抓取结果清一色是”被 robots.txt 拦截”。我当场愣住了——我压根没写什么拦截规则啊。
打开网站的 robots.txt 一看,我傻眼了。里面有一行 Disallow: /,是我几个月前不知道从哪个教程里抄来防爬虫的,结果把百度蜘蛛也一起挡在了门外。整整四个月,那个栏目的新文章一个字都没被收录。
robots.txt 这东西,用好了是蜘蛛的指路牌,用错了就是全站的封条。 今天这篇,我把这个”最不起眼但最致命”的文件从头讲清楚,重点是那些容易写错的坑。
robots.txt 是什么?一句话讲清楚
它就是放在你网站根目录下的一个纯文本文件,作用是给搜索引擎蜘蛛(以及各种爬虫)一条”规矩”:哪些页面允许你爬,哪些不允许。
比如这个文件通常长这样:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-content/plugins/
Allow: /
Sitemap: https://你的域名.com/sitemap.xml
翻译成大白话就是:
User-agent: *—— 下面的规则对所有爬虫生效Disallow: /wp-admin/—— 别爬后台目录Disallow: /wp-content/plugins/—— 别爬插件目录Allow: /—— 其余的都允许Sitemap: ...—— 蜘蛛,我的站点地图在这里
它不需要你懂代码,就是纯文本。但恰恰因为太简单,很多人反而不当回事,随手一写就出事。
那些容易把网站”封死”的错误写法
我把常见的错误写法和它们各自的下场,列成一张表。这些不是我从网上抄来的理论,每一条都对应着我或我身边朋友踩过的坑。
| 错误写法 | 你以为的效果 | 实际的效果 |
|---|---|---|
Disallow: / | 防采集、防爬取 | 屏蔽了所有页面,包括百度蜘蛛,全站不被收录 |
Disallow: /*? | 屏蔽带参数的动态 URL | 写法不对,实际拦截了一堆正常页面 |
| 大小写、通配符乱用 | 精确屏蔽某个目录 | 规则不生效,或者误伤一片 |
把 Allow 和 Disallow 顺序搞反 | 先允许后禁止 | 规则冲突,以”最匹配的那条”为准,结果和你想要的相反 |
只写 Disallow 忘了默认是允许 | 我以为不写就是禁止 | 不写 Disallow 的地方,默认都允许爬 |
最致命的,就是我当年那个 Disallow: /。 这个斜杠代表”根目录下所有内容”,等于把整个网站打包禁止了。很多人抄这个来”防采集”,殊不知采集爬虫根本不看你的 robots.txt(这东西没有强制力,只有守规矩的蜘蛛才遵守),防采集防了个寂寞,反而把最守规矩的百度蜘蛛给拦了。
还有一条经典的顺序坑。 这个我得展开说。规则是这样匹配的:蜘蛛爬一个 URL 时,会找 robots.txt 里最匹配的那条规则来决定允许还是禁止,而不是从上到下”先到先得”。
比如你写:
Disallow: /category/
Allow: /category/seo/
你以为”category 目录整体禁止,但 seo 这个子目录单独放行”。实际上,对于 /category/seo/xxx 这个 URL,Allow: /category/seo/ 比 Disallow: /category/ 更精确、更匹配,所以结果是被允许的——这条你反而碰巧写对了。
但如果顺序和规则写反,就可能出现”你以为禁止了,其实是允许”,或者”你以为允许了,其实被禁”的乌龙。
正确的 robots.txt,该包含哪些东西
对个人站长、尤其是用 WordPress 的朋友,一个”够用且安全”的 robots.txt,推荐包含下面几块:
1. 屏蔽后台和管理类目录。 这些页面没有收录价值,还暴露后台路径:
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
2. 屏蔽搜索结果页、分类分页等”低质量”页面。 防止蜘蛛把精力耗在无意义的页面上,也避免收录重复内容:
Disallow: /search/
Disallow: /*?s=
3. 声明 sitemap 地址。 这是好事,等于主动告诉蜘蛛”我的站点地图在这”:
Sitemap: https://你的域名.com/sitemap.xml
4. 不要随意 Disallow: /。 除非你明确知道自己在干什么。个人博客、企业站,绝大部分情况下根本不需要屏蔽整站。
如果你用的是 WordPress + SEO 插件(比如 Rank Math、Yoast),其实可以完全不用手写——这些插件会自动生成一份合理的 robots.txt,还会在后台给你一个可视化编辑界面,改规则点鼠标就行,不用碰代码。
写完怎么验证自己写得对不对
写完 robots.txt,别急着收工,一定要验证。三个办法:
第一,最简单的:直接在浏览器访问。 打开 https://你的域名.com/robots.txt,确认能正常显示内容,而不是 404。
第二,用百度搜索资源平台的”robots 检测”工具。 在站长平台里找到 robots 检测(有的叫”robots 更新”),把你网站根目录里的内容贴进去,再用一个测试 URL 试一下”这个页面蜘蛛能不能爬”。能直观看到结果是”允许”还是”禁止”。
第三,用抓取诊断单独测试。 我在文章开头说的那个教训,就是用抓取诊断发现的。你可以随便挑一个关键页面,看它的抓取结果。如果显示”被 robots 拦截”,赶紧回去查 robots.txt。
改完 robots.txt 之后,还有个细节:robots.txt 的改动不是立刻全局生效的,搜索引擎有个缓存,可能要等几天才会用新规则。所以别改完第二天就焦虑”怎么还没效果”。
回到我开头那个事故。发现 Disallow: / 之后,我第一时间把它改成了上面说的”安全版”,然后在百度搜索资源平台里提交了 robots 更新,又把那个被误伤的栏目重新做了抓取诊断、提交收录。大概过了一周,那些积压了四个月的文章,终于陆陆续续开始被收录了。
你现在就可以去浏览器里敲一下 你的域名/robots.txt,看看里面到底写了什么。也许一切正常,也许——你会和我当年一样,发现一个让你后背发凉的大坑。
原创,首发于 wujianzhan.com。
