
做网站运营的,难免会碰到需要禁止搜索引擎蜘蛛抓取的情况。比如站点正在改版调试,不想让蜘蛛抓到半成品页面;有些内部测试目录、私密页面,没必要对外收录;还有些重复的分页、打印页,留着反而影响整站权重。这时候就需要给蜘蛛设个“禁止入内”的标识。
很多新手第一反应是找后台开关,其实常见的设置方法有好几种,强制程度不一样,适用场景也不同,搞混了很容易踩坑。最常见的坑就是调试的时候禁了蜘蛛,完事忘了改回来,等发现的时候收录已经掉了一大截。
先说最常用的一种:robots.txt文件。
这应该是站长们最熟悉的方法了。在网站根目录放一个robots.txt文件,用标准语法告诉蜘蛛哪些目录可以爬,哪些不能碰。比如要禁止所有蜘蛛抓取整站,就写User-agent:*,下一行写Disallow:/;要是只禁某个测试目录,就写Disallow:/test/。
这种方法的好处是简单通用,所有正规搜索引擎都会遵守这个协议,而且完全不影响用户正常访问页面。但要注意两点:一是语法别写错,多一个斜杠少一个空格都可能失效;二是它只是“君子协议”,不是强制拦截,有些不正规的爬虫该爬还是会爬。而且就算写了禁止,有些极端情况下页面还是可能被收录,只是不会抓取具体内容。
第二种方法:页面meta标签。
如果只是单篇页面、单个栏目不想被收录,改robots就太麻烦了,直接在页面的head里加metarobots标签就行。最常用的是<meta name="robots"content="noindex,nofollow">,意思是不收录这个页面,也不追踪页面上的链接。
这种方法比robots更灵活,精准到单个页面,而且只要蜘蛛爬到了页面,就会识别这个标记。适合用来处理零散的低价值页面、重复页面,比如打印页、归档页,不用动服务器配置,改模板就能实现。也可以单独设置只禁止索引、不禁止追踪,按需调整参数就行。
第三种:服务器层面直接拦截。
如果是真正的私密内容,不想让任何爬虫访问,那前两种方法都不够保险,直接在服务器配置里拦截才管用。比如用Nginx或者Apache配置,根据User-Agent识别蜘蛛请求,匹配到规则就直接返回403或者404状态码,蜘蛛根本拿不到页面内容。
这种方法是强制拦截,最彻底,但也最容易出问题。一是蜘蛛的IP和标识一直在变,很容易漏拦或者误拦正常用户;二是如果配置写错了误拦正规搜索引擎,可能会导致整站收录直接清零,没有一定的技术基础不建议随便改。
除了这三种,现在很多主流CMS系统、建站程序后台都自带“禁止搜索引擎收录”的开关,新手直接点开关就行,不用手动改代码。但要切记,不管用哪种方法,临时调试完一定要记得改回去。
还有个误区要提一下:很多人想用禁止蜘蛛的方式防采集,其实作用不大。正规的搜索引擎会遵守规则,专门搞采集的爬虫根本不会理robots,也不会按常理出牌。真要防采集,还是得从内容加密、访问频率限制这些方向入手。
总的来说,只是临时调试、屏蔽低价值页面,用robots或者meta标签就足够了;真正的私密内容,再考虑服务器层面拦截。按需选择,用完记得恢复,基本就不会出什么大问题。
上一篇:百度收录后一两天就删除?