robots.txt可以位于服务器的子目录中吗?


16

我有一个要从搜索引擎网络搜寻器隐藏的子目录。

一种方法是robots.txt在服务器的根目录中使用a (标准方法)。但是,任何知道网站URL并具有一些基本Web知识的人都可以访问robots.txt内容并可以发现不允许的目录。

我曾想过一种避免这种情况的方法,但我不确定是否可行。

我们X是子目录,我要排除的名称。停止Web爬网程序索引X目录并同时使某人更难X从根目录识别目录的robots.txt一种方法是robots.txtX目录中添加,而不是在根目录中添加。

如果我遵循此解决方案,则会遇到以下问题:

  1. Web爬网程序会robots.txt在子目录中找到吗?(假设robots.txt存在,并且已经存在于根目录中)
  2. 如果robots.txtX子目录中,那么我应该使用相对还是绝对路径?:

    User-agent: *
    Disallow: /X/
    

    要么

    User-agent: *
    Disallow: /
    

2
我不确定为什么要避免人们阅读您不允许的目录,但是如果有敏感数据,那么它不仅应该被机器人阻止,还应该受到登录名或其他安全性的限制。
安德鲁·洛特

事实并非如此,我希望一个特定的用户可以访问它(就隐私而言,对数据不敏感),并且我不想锁定目录。
拉斐尔

5
如果您有隐私问题,则应该以其他方式保护数据。那不是robots.txt的目的。
安德鲁·洛特

Answers:


18

不可以,网络搜寻器不会读取或遵守子目录中的robots.txt文件。如准官方robotstxt.org网站上所述:

放在哪里

简短的答案:在Web服务器的顶级目录中。

或在Google帮助页面上重点是我的):

一个robots.txt文件是一个文件在您的网站的根目录,表示您的网站,你不希望被搜索引擎爬虫访问的那些部分。

无论如何,使用robots.txt从搜索结果中隐藏敏感页面是个坏主意,因为如果其他页面链接到搜索引擎,则搜索引擎可以为robots.txt中不允许的页面编制索引。或者,如上面链接的Google帮助页所述:

您不应使用robots.txt作为从Google搜索结果中隐藏网页的方法。这是因为其他页面可能指向您的页面,并且您的页面可能以此方式建立索引,从而避免了robots.txt文件。

那么,您应该怎么做呢?

  • 您可以让搜索引擎对页面进行爬网(如果他们能够找到它们),但是可以包括带有content 的robots meta标签noindex,nofollow。这将告诉搜索引擎,即使它们确实找到了指向这些页面的链接,也不要为这些页面建立索引,并且不要跟随这些页面的任何其他链接。(当然,这仅适用于HTML网页。)

  • 对于非HTML资源,您可以配置Web服务器(例如,使用 .htaccess文件),以发送具有相同内容的X-Robots-Tag HTTP标头

  • 您可以设置密码验证来保护敏感页面。除了保护网页免受未经授权的访客访问外,它还可以有效地阻止网络爬虫。


太棒了,是一个静态HTML页面,通过添加meta标签可以解决问题。谢谢。
拉斐尔

5

robots.txt应位于根目录中,并且不应具有任何其他名称。根据标准规格

必须可以通过HTTP在本地URL“ /robots.txt”上访问该文件。


也就是说,网络爬虫不会在robots.txt的其他目录中查找?
拉斐尔

1
并非我见过。/robots.txt是标准,那么搜索引擎怎么会知道其他地方该怎么看?
安德鲁·洛特

0

您实际上可以在子目录中使用robots.txt。当前,这就是我们对待语言子域的方式。我们使用从/robots.txt到/lang/robots.txt(每个子域)的301重定向,它已被正确提取。

当使用简单的正斜杠时,它也会选择文件夹结构作为正确的根。例如。不允许: /

被视为禁止一切,而不仅仅是{redirected} robots.txt文件所在的当前子目录。

但是同样,我们使用301重定向并将其放置在适当的位置,因此,如果没有301,我怀疑是否会找到它...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.