一种方法是在服务器的根目录中使用
robots.txt
并添加一条规则以排除该子目录,目录。但是,任何具有基本Web知识的人都可以访问robots.txt内容并找出不允许的目录。我想办法避免这种情况,但我不确定是否可以使用。
让
X
为我要排除的子目录的名称。阻止Web爬网程序索引X
目录并同时使某人更难从根X
识别robots.txt
目录的一种方法是在robots.txt
目录中添加X
。 :如果根目录中也已经存在
robots.txt
,那么网络爬虫会在子目录中找到robots.txt
吗?如果
robots.txt
位于X
子目录,那么我应该使用相对路径还是绝对路径?User-agent: *
Disallow: /X/
或
User-agent: *
Disallow: /
#1 楼
不会,网络搜寻器不会读取或遵守子目录中的robots.txt文件。如准官方robotstxt.org网站上所述:放置位置
简短答案:位于Web服务器的顶级目录中。
或在Google的帮助页面上(重点是我的):
robots.txt
文件是您网站根目录中的文件,用于指示您不希望搜索引擎抓取工具访问您网站中的那些部分。无论如何,使用robots.txt隐藏搜索结果中的敏感页面是一个坏主意,因为如果其他页面链接到了robots.txt,搜索引擎可以为其索引。或者,如上面链接的Google帮助页所述:
您不应使用robots.txt作为从Google搜索结果中隐藏网页的方法。这是因为其他页面可能指向您的页面,并且可以通过这种方式为您的页面建立索引,从而避免了robots.txt文件。
那么您应该怎么做呢?
您可以让搜索引擎对页面进行爬网(如果他们能够找到它们),但是可以包含带有内容
noindex,nofollow
的漫游器元标记。这将告诉搜索引擎,即使它们确实找到了指向这些页面的链接,也不要为这些页面建立索引,并且不要跟随这些页面的任何其他链接。 (当然,这仅适用于HTML网页。)对于非HTML资源,您可以配置Web服务器(例如,使用.htaccess
文件)以发送X-具有相同内容的Robots-Tag HTTP标头。您可以设置密码验证来保护敏感页面。除了保护网页不受未经授权的人类访问者侵害外,它还可以有效地阻止网络爬虫。
评论
太棒了,是一个静态HTML页面,通过添加meta标签可以解决问题。谢谢。
–拉斐尔
16年1月31日在20:05
#2 楼
您的robots.txt
应该位于根目录中,并且不应具有任何其他名称。根据标准规范:必须通过HTTP在本地URL“ /robots.txt”上访问此文件。
评论
也就是说,网络搜寻器不会在robots.txt的其他目录中查找?
–拉斐尔
16年1月31日在19:59
并非我见过。 /robots.txt是标准,所以搜索引擎怎么会知道在其他地方应该看?
–安德鲁·洛特(Andrew Lott)
16年1月31日在20:00
#3 楼
您实际上可以在子目录中使用robots.txt。当前,这就是我们对待语言子域的方式。我们使用/robots.txt的301重定向到/lang/robots.txt(每个子域),并且可以正确拾取该文件。它也可以拾取文件夹结构作为使用简单的正斜杠时正确的根。例如。 disallow:/
被视为禁止一切,而不仅仅是{redirected} robots.txt文件所在的当前子目录。
但是同样,我们使用301和有了它,所以如果没有301,我怀疑它是否会被发现...
评论
我不确定为什么要避免人们阅读您不允许的目录,但是如果有敏感数据,那么它不仅应该被机器人阻止,还应该受到登录名或其他安全性的限制。事实并非如此,我希望一个特定的用户可以访问它(对数据而言,不敏感,只是为了隐私),并且我不想锁定目录。
如果您有隐私问题,则应该以其他方式保护数据。那不是robots.txt的目的。
@AndrewLott这是正确的,但是如果您拥有管理员登录页面,则您不想将URL公开给该页面,因为这将导致漫游器在请求时对其进行锤击。例如,如果我有一个管理URL / admin_secretsausage,则我不希望Google为该索引编制索引,但我也不想公开该URL。