文章关键字 ‘robot’

网站必备的N个文件

2008年10月31日,星期五

搭建一个网站仅仅是购买域名、空间、把文件传上去就够了吗?其实不够,还有一些文件也是一个网站必不可少的,请容我一一叙述。

robots.txt

robots.txt是一个网站关于搜索引擎权限的说明,这个文件规定了哪些搜索引擎能够访问您的网站,而哪些不能,哪些能被收录(如html文件),哪些不希望被收录(如gif,js,png等图片)。我曾经写过一篇关于robots.txt的文章,简单介绍了robots.txt的几种规则。robots.txt虽然不是必须的,但为了更好的符合搜索引擎的收录规则,不妨放置一个robots.txt文件。

sitemap.xml

sitemap.xml文件是网站的地图,该地图能够协助搜索引擎对网站的页面进行收录,避免搜索引擎收录一些无关页面,减少服务器流量开支。目前国外的Google,MSN等搜索引擎普遍支持sitemap.xml规则。在Wordpress下推荐使用Google XML Sitemaps来生成sitemap.xml文件。如果您创建自己的网站,不妨使用进行Sitemap Generator创建您的sitemap。

rss.xml

rss.xml文件用来向访客提供最新的订阅信息。当然,这个文件不一定得取名 rss.xml,在Wordpress下一般以 http://photozero.net/feed 方式访问,但必须在首页HEAD中加入LINK标签以便让阅读器、浏览器识别。

favicon.ico

favicon.ico文件是一个网站的小型LOGO,在Firefox等浏览器下,一般显示在标签栏标题的左侧。一个favicon.ico文件应该是一个网站必不可少的点缀。从服务器带宽的角度来说,一旦访问一个网站,支持favicon.ico文件的浏览器(如Firefox),都会自动向服务器请求下载favicon.ico文件,如果favicon.ico文件不存在,返回一个404页面,可能会浪费很多的流量。favicon.ico可以有很多种生成方法,有在线的生成器,只要在本地做一个16*16或32*32的JPG/GIF文件上传后可生成ICO文件,同样也可以使用IconCoolEditor等ICON编辑器进行生成。

以上文件都应该放在网站根目录,能够以 http://photozero.net/robots.txt 方式访问。

如何禁止搜索引擎收录?

2008年09月19日,星期五

很多站长都认为有搜索引擎收录是一件好事,首先是自己的网站得到了承认,通过搜索引擎也能带来一定的流量。其实并不完全准确,某些比较不知名的搜索引擎,即便收录了许多网页,并且天天更新,却不能带来实在的利益,反而浪费了服务器带宽(国内的主机一般宣称不限流量,但国外的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.禁止百度收录(想和淘宝一样抵制百度就这么做 :)

  1. User-agent: *
  2. Disallow:
  3.  
  4. User-agent: baiduspider
  5. Disallow: /

首先是User-agent,每个搜索引擎都有自己的User-agent,比如Google的为 Googlebot,百度的为 baiduspider ,可能区分大小写,其他相对应的应该到搜索引擎的帮助页面去查询一下。 * 是一个通配符,通配所有的搜索引擎,Disallow: 项目表示禁止访问的位置,第一个Disallow:后面为空,表示没有禁止访问的项目,也就是允许所有的搜索引擎收录。但如果要添加例外,还可以添加一行User-agent: baiduspider,表示下面的规则仅适合百度蜘蛛,百度蜘蛛的规则是Disallow: / ,也就意味着禁止收录该域名下所有的网页。

在特殊情况下,我们可能希望部分不被所有的搜索引擎收录,比如Wordpress的wp-admin/目录是后台管理的目录,wp-content/是存放主题、插件的目录,这个不需要被搜索引擎收录,可以编辑robots.txt为

  1. User-agent: *
  2. Disallow: /wp-admin/
  3. Disallow: /wp-content/

2.仅允许百度以及Google收录(推荐)

  1. User-agent: Googlebot
  2. Disallow:
  3.  
  4. User-agent: baiduspider
  5. Disallow:
  6.  
  7. User-agent: *
  8. Disallow:/

使用robots.txt需要注意的是,并非所有的搜索引擎都遵守该协议,而且就算遵守该协议不代表蜘蛛不对网站进行抓取,可能是抓取后不发布出来而已,流量是要样要耗费的。

方法三:脚本判断,禁止

这里写一下PHP的方法,其他ASP等方法也是类似的。
检测来访的访客的User-agent(UA),如果是搜索引擎的蜘蛛则立即禁止访问,提示出错信息。

  1. if(preg_match("/(google|baidu)/i", $_SERVER['HTTP_USER_AGENT'])){
  2.     header('HTTP/1.1 403 Forbidden');
  3.     exit;
  4. }

该代码当来访的访客的UA中包含google或baidu字样即返回403禁止信息并退出脚本。

  1. //禁止UA中含有bot/crawl/spider字样的用户
  2. //但允许百度和Google
  3. if(preg_match("/(bot|crawl|spider)/i", $_SERVER['HTTP_USER_AGENT']) && !preg_match("/(google|baidu)/i", $_SERVER['HTTP_USER_AGENT'])){
  4.     header('HTTP/1.1 403 Forbidden');
  5.     exit;
  6. }

用脚本的方法禁止搜索引擎的访问比较方便快捷,特别是WordPress这样的程序,只要加一个插件即可(过些天做一个发布出来)。用这个方法对服务器流量的消耗也不大,可以接受。