利用ASP实现三个强大功能之三如何隐藏页面以防被搜索

作者:不详 来源: 日期:2002-6-20
  在网络上为我们导航的搜索引擎使用一些小程序 --- 例如我们所知道的’
robots’、’bots’、 ’crawlers’和’spiders’ --- 来对页面进行索引。然而,当开
发一个站点,尤其是使用ASP进行开发时,做到防止页面被索引却是非常有用的。当这些搜
索引擎正在回顾它们对所创建的web 页面进行动态索引的方案时,例如ASP页面,本文将帮
助你学习一些重要的技巧来避免robots 跟踪那些你不情愿被它们索引的页面。 

这为什么与你有关? 

  比方说现在你访问了XYZ公司的Web 站点,用你所熟悉的搜索引擎对’XYZ Corp.’ 进
行搜索。如果你发现你的管理页面也在相关的链接表中的话就会有点担心了。如果你有一个
电子商务站点,你会不愿意在用户结束前面的页面之前,得到这个站点的定单部分最后一页
的url 。不仅仅是网管人员不希望发生的。对于用户来说,有些页面不能正常运行也是烦恼
的事,或者是因为他们没有适当的权限,或者因为他们没有按照设定的顺序访问页面。这样
也不利于你的站点的声誉。这与那些商业搜索引擎的经营者自身也有关系。因为他们想要提
供准确的链接来改善服务。

  那么,如何防止这些程序对你的站点的某些页面进行索引呢?有两种方法可供选择,一
是在根目录下包含一个名为robots.txt 的文件,或者是使用< META > 标记。 

包含一个robots.txt 文件

  早在1994年,一个自动邮件发送列表就联合提出了一个防止robots 拖拽站点的协定。
但是这并不是一个正式的标准,它不能提供执行的保证,但是却为许多robot 作者所使
用。 

  创建一个robots.txt 文件非常简单,它表明网管人员所希望的robot 行为标准。注意
文件名必须用小写字母,而且必须放在站点的根文件夹中,例如
http://xyzcorp/robots.txt ,这样一个文件就能带出整个站点的全部细节。 

一个robots.txt 文件中有什么? 

  每个robots.txt 文件包含一条或多条记录。一条记录由robot 的用户代理字符串组
成,即你愿意遵循的指示和应用于它的指示。不用担心你需要知道在web中漫游的所有robot
的用户代理字符串,因为你可以用通配符* 来应用所有的robots。以下是一个记录的例
子: 


User-agent: * 

Disallow: /XYZfinances.asp 

Disallow: /admin 

Disallow: /news/update.asp 


  除了用户代理字符串/通配符,只需要包含一个disallow 命令。这一个简单的例子就显
示了你将会需要的全部可能性。它表明没有用户代理字符串能够进入 XYZfinances.asp ,
用这一行表示: 

Disallow: /XYZfinances.asp 

  或者说用户代理字符串不能进入管理文件夹及其下面的所有文件夹:

Disallow: /admin 

  或者是新闻文件夹中的update.asp文件,如果新闻文件夹中所有其它内容都可以被索引
的话。 

  在一条记录中你愿意包含多少用户代理字符串的名字都可以。同样在任何一个
robots.txt 文件中,你愿意包含多少条记录都可以(只要用一个或多个空行分隔开这些记
录就可以)。 

  每一条单独的记录都可以为一个或多个robots提供不同的指示。但是为那些没有用用户
代理字符串所命名的引擎增加一个通配符规则是明智的。最流行的选择是维护用一条记录和
一个代表用户代理字符串的通配符所表示一个方案。一个有196个用户代理的清单可参考 

http://info.webcrawler.com/mak/projects/robots/robots.html。 

  普遍认为,robots应该忽略大小写和版本号。要记住这是大多数商业搜索引擎的robots
作者们的意见,因为你不想用那些没用的页面来使用户感到苦恼。但是,虽然在命令行中你
可以不必考虑大小写,但是必须保证在键入URL时是准确无误的。虽然Windows NT 对文件名
和路径名的大小写无所谓,但并不是所有的平台都如此。 

  你希望包含进去的其它东西就只有注释了,这些使用UNIX bourne shell 协定,如用#
符号表示在hash 符号前面空白,和一行中可以被忽略的剩余部分。如果一行中只包含一个
注释的话,它就可以完全被忽略,虽然它在记录之间的作用与空行并不相同。 


现在来看看两个最终的例子。 
例1 


# Don’t come to this site 

User-agent: * 

Disallow: / # Disallows anything 


例2 


# robots.txt for XYZcorp 

# webmaster: John Doe contact JohnD@xyzcorp.com 

User-agent: * # Applies to all robots except next record 

Disallow: /store/order/ # No robot should visit any URL starting with 

/store/order/ 

Disallow: /admin/ # Disallow any pages in the admin folder 

Disallow: /world_domination.asp # Disallow world_domination.asp 


好,这就是有关robot.txt文件的全部内容。


下面介绍如何使用 < META >标记 。 
使用一个< META > robot 标记 

  同样,你还是不能保证一个robot 会完全遵守< META >标记中的指示,但是对商业搜索
引擎来说还是十分有效的。< META >标记必须包含在一个文件的< HEAD > 部分。他们工作
的原理是告诉robot 是否可以对其中有这个标记的页面进行索引,是否可以跟随页面上或其
下的文件夹中的任何链接。 

同样,语法非常简单。第一个例子是: 

< META NAME="robots" CONTENT="noindex" > 


  这行代码告诉 robot不要索引这一页。 

下一个例子: 

< META NAME="robots" CONTENT="nofollow" > 

  允许robot索引这一页,但是规定它不能够跟随这一页上的任何链接。如果你想将二者
都禁止,可以使用: 

< META NAME="robots" CONTENT="noindex, nofollow" > 

  这表示不要索引这一页,也不要跟随这页上的任何链接。但是,还有一个更简单的方
法: 

< META NAME="robots" CONTENT="none" > 

  还是表示不要索引这一页,或跟随这页上的任何链接。 

  不幸的是,如果你有一个名为admin.asp的文件与 update.asp相链接,在admin.asp中
使用< META > 

  标记来防止robot 对admin.asp 或 update.asp 进行索引,却忘记在另一个与
update.asp 相链接的 

  页面中也做同样的处理,那么robot 还是可以通过这个漏掉< META > 标记的第二页而
到达update.asp。 

  另外,你还可以使用值索引。但由于它们被忽略时是默认值,因此这是没有必要的,而
且这样做没有意义。 

  如果你使用的是IIS,那么应该总是使用定制的 HTTP 头文件来执行< META > 标记方
法。从理论上讲,一个robot 对以这种方式创建的< META > 标记的反应应该是完全一样
的,看起来是这样: 

< META HTTP-EQUIV="robots" CONTENT="noindex" > 

  从理论上讲,现在我们就可以对所有的文件夹或文件夹中的文件或虚拟路径使用IIS创
建的定制头文件。但是到目前为止,这种方法的测试并不成功。这些方法都不能完全保证将
你的页面藏起来。确实,如果有人故意写一个robot 去找到你的私用页面的话,他们反而成
了指向作者想要保护的页面的指针。但是,对于防止商业站点索引页面来说,这些方法还是
奏效的,也只有在这方面是有意义的。
相关文章