2009-09-29 69 views
7

如何禁止所有动态URL中的robots.txt如何禁止所有动态网址的robots.txt

Disallow: /?q=admin/ 
Disallow: /?q=aggregator/ 
Disallow: /?q=comment/reply/ 
Disallow: /?q=contact/ 
Disallow: /?q=logout/ 
Disallow: /?q=node/add/ 
Disallow: /?q=search/ 
Disallow: /?q=user/password/ 
Disallow: /?q=user/register/ 
Disallow: /?q=user/login/ 

我希望禁止与/ Q =

+0

根据[此](http://smackdown.blogsblogsblogs.com/2008/05/23/googlebot-creates-pages-instead-of-simply-indexing-them-new-form-crawling-algo-goes -bad /),禁止搜索页面可能是一个非常好的主意。所以这个问题是非常相关的,不应该被关闭。 – 2015-04-14 13:12:43

回答

11

的回答你的问题是使用

Disallow: /?q= 

上的robots.txt最好的(当前访问)来源我能找到的是Wikipedia。 (据推测来源是http://www.robotstxt.org,但现在网站已关闭。)

根据维基百科页面,标准定义了两个字段; UserAgent:和Disallow :. Disallow:字段不允许显式通配符,但每个“不允许”路径实际上是一个路径前缀;即匹配以指定值开始的任何路径。

的允许:字段是非标准扩展,以及在不允许显式通配符任何支持将是一个非标准扩展。如果你使用这些,你没有权利期望一个(合法的)网络爬虫能够理解他们。

这不是爬行者是“聪明”还是“愚蠢”的问题:这完全是关于标准兼容性和互操作性的问题。例如,任何在“Disallow:”中使用显式通配符“聪明”的东西的网络爬虫对于(假设的)robots.txt文件来说都是不利的,其中这些字符旨在从字面上解释。

+0

@stephen感谢您的详细解答 – pmarreddy 2009-09-30 08:03:26

+0

谷歌对于理解robotos.txt的一个很高的结果是建议正则表达式起作用 - 我没有发现它们能够使用正则表达式。 – landed 2016-10-12 13:38:57

2

正如保罗说了开头的所有事情很多robots.txt解释器不太亮,并且可能无法解释路径中的通配符,因为您打算使用它们。

这就是说,一些爬虫尝试跳过自己的动态网页,担心他们可能会陷入无限循环上具有不同的URL链接。我假设你问这个问题是因为你面对一个勇于尝试访问这些动态路径的勇敢的爬虫。

如果你有具体的爬虫的问题,你可以尝试以调查履带具体是如何工作的通过搜索其robots.txt的能力,并指定特定的robots.txt节吧。

如果您通常只想禁止对动态页面进行此类访问,则可能需要重新考虑robots.txt设计。

通常,动态参数处理“页面”位于特定目录或特定目录集下。这就是为什么简单地Disallow:/ cgi-bin或/ app并且用它来完成通常很简单的原因。

在你的情况下,你似乎已经将根映射到了一个处理参数的区域。您可能要逆转的robots.txt的逻辑和这样说:

User-agent: * 
Allow: /index.html 
Allow: /offices 
Allow: /static 
Disallow:/

这样你的允许名单将通过特别添加的数据抓取工具都不能索引覆盖你不允许名单。请注意,并非所有抓取工具的创建都是平等的,您可能需要稍后改进该robots.txt,为任何仍然行为不当的抓取工具添加特定部分。

+1

@Grookoo:“允许:”是非标准的。忽视它的履带不是行为不端;它只是符合robots.txt规范。 – 2009-09-30 00:00:19

相关问题