很多站长都认为有搜索引擎收录是一件好事,首先是自己的网站得到了承认,通过搜索引擎也能带来一定的流量。其实并不完全准确,某些比较不知 名的搜索引擎,即便收录了许多网页,并且天天更新,却不能带来实在的利益,反而浪费了服务器带宽(国内的主机一般宣称不限流量,但国外的 Dreamhost这样的主机都是限制流量的),这样的搜索引擎,收不收录也是无所谓的。本文说说如何禁止某些搜索引擎的抓取及收录。
首先谈谈哪些搜索引擎是一定有用的,Google,百度,我认为这两个搜索引擎是必须的。国内网站的90%以上的搜索引擎流量来自于Google和 百度,其中百度七成,Google三成左右。Google是搜索引擎的权威(强龙),而百度就是中文搜索的领袖(地头蛇)。除此之外,我认为其他的搜索引 擎都可以屏蔽。雅虎中国、Live中文、以及国内的搜狗、搜搜、有道之辈均是无足轻重的搜索引擎。
禁止搜索引擎收录的方法大概有3种。
方法一:服务器禁止访问。
这需要服务器配备有cPanel这样的后台管理软件,设定某个搜索引擎所在的IP段禁止访问。如要封锁Google的蜘蛛,先通过域名对应IP查询 得www.google.com的IP地址,如74.125.19.99,再通过IP WHOIS查询查到IP段 74.125.0.0 – 74.125.255.255 的所有人均是Google公司,把这个IP段填入IP黑名单中。(具体的方法根据不同的管理软件有所不同,可能是 74.125.0.0-74.125.255.255或74.125.*.*)
这个方法比较好的地方在于直接禁止搜索引擎的访问,除了HTTP请求头,几乎不耗费流量,一般情况下这点流量也不会计算在你的消耗的流量当中。这是 禁止搜索引擎收录的最好方法。但麻烦在于你不可能得到Google的所有IP段,这个就得靠收集了。
方法二:robots.txt禁止
robots.txt(小写)是放置在网站根目录下的搜索引擎权限控制文件。搜索引擎一般遵守robots.txt协议。通过编辑 robots.txt协议,可以禁止某些搜索引擎的访问、禁止某个文件、文件夹被搜索引擎收录,适合用于保护私有文件。搜索引擎通过读取 robots.txt,判断自己是否在被禁止搜索引擎之列,如果被禁止,一般不会对该网站进行抓取,除了百度这变态 。
robots.txt的简单用法:
1.禁止百度收录(想和淘宝一样抵制百度就这么做 )
- User-agent: *
- Disallow:
- User-agent: baiduspider
- Disallow: /
首先是User-agent,每个搜索引擎都有自己的User-agent,比如Google的为 Googlebot,百度的为 baiduspider ,可能区分大小写,其他相对应的应该到搜索引擎的帮助页面去查询一下。 * 是一个通配符,通配所有的搜索引擎,Disallow: 项目表示禁止访问的位置,第一个Disallow:后面为空,表示没有禁止访问的项目,也就是允许所有的搜索引擎收录。但如果要添加例外,还可以添加一行 User-agent: baiduspider,表示下面的规则仅适合百度蜘蛛,百度蜘蛛的规则是Disallow: / ,也就意味着禁止收录该域名下所有的网页。
在特殊情况下,我们可能希望部分不被所有的搜索引擎收录,比如Wordpress的wp-admin/目录是后台管理的目录,wp-content /是存放主题、插件的目录,这个不需要被搜索引擎收录,可以编辑robots.txt为
- User-agent: *
- Disallow: /wp-admin/
- Disallow: /wp-content/
2.仅允许百度以及Google收录(推荐)
- User-agent: Googlebot
- Disallow:
- User-agent: baiduspider
- Disallow:
- User-agent: *
- Disallow:/
使用robots.txt需要注意的是,并非所有的搜索引擎都遵守该协议,而且就算遵守该协议不代表蜘蛛不对网站进行抓取,可能是抓取后不发布出来 而已,流量是要样要耗费的。
方法三:脚本判断,禁 止
这里写一下PHP的方法,其他ASP等方法也是类似的。
检测来访的访客的User-agent(UA),如果是搜索引擎的蜘蛛则立即禁止访问,提示出错信息。
- if ( preg_match ( " /(google|baidu)/i " , $_SERVER [ ' HTTP_USER_AGENT ' ])){
- header ( ' HTTP/1.1 403 Forbidden ' ) ;
- exit ;
- }
该代码当来访的访客的UA中包含google或baidu字样即返回403禁止信息并退出脚本。
- //禁止UA中含有bot /crawl/spider字样的用户
- //但允许百度和Google
- if ( preg_match ( " /(bot|crawl|spider)/i " , $_SERVER [ ' HTTP_USER_AGENT ' ]) && ! preg_match ( " /(google|baidu)/i " , $_SERVER [ ' HTTP_USER_AGENT ' ])){
- header ( ' HTTP/1.1 403 Forbidden ' ) ;
- exit ;
- }
用脚本的方法禁止搜索引擎的访问比较方便快捷,特别是WordPress这样的程序,只要加一个插件即可(过些天做一个发布出来)。用这个方法对服 务器流量的消耗也不大,可以接受。