如何禁止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 :(得分:11)
您的问题的答案是使用
Disallow: /?q=
我在robots.txt上找到的最佳(当前可访问的)来源是Wikipedia。 (据说明确的来源是http://www.robotstxt.org,但网站目前正在停止。)
根据维基百科页面,该标准仅定义了两个字段; UserAgent:和Disallow: Disallow:字段不允许显式通配符,但每个“不允许”的路径实际上是路径前缀;即匹配任何以指定值开头的路径。
Allow:字段是非标准扩展,Disallow中对显式通配符的任何支持都是非标准扩展。如果您使用这些,则无权期望(合法)网络爬虫能够理解它们。
这不是爬虫“聪明”或“愚蠢”的问题:它完全是关于标准合规性和互操作性。例如,在“Disallow:”中使用显式通配符执行“智能”操作的任何Web爬网程序都会对(假设的)robots.txt文件造成不良影响,这些文件的字面意图按字面解释。
答案 1 :(得分:2)
正如Paul所说,许多robots.txt解释器不是太明亮,并且可能无法解释路径中的通配符,因为您打算使用它们。
也就是说,一些爬虫试图自己跳过动态页面,担心他们可能会被链接到不同网址的无限循环中。我假设你问的是这个问题,因为你面对的是一个勇敢的爬虫,正在努力寻找那些动态的道路。
如果您遇到特定抓取工具的问题,可以尝试通过搜索其robots.txt容量并为其指定特定的robots.txt部分来专门调查抓取工具的工作方式。
如果您通常只是想禁止对动态网页进行此类访问,则可能需要重新考虑robots.txt设计。
通常,动态参数处理“页面”位于特定目录或特定目录集下。这就是为什么通常非常简单的Disallow:/ cgi-bin或/ app并且完成它。
在您的情况下,您似乎已将根映射到处理参数的区域。您可能想要颠倒robots.txt的逻辑并说出类似的内容:
User-agent: *
Allow: /index.html
Allow: /offices
Allow: /static
Disallow: /
这样,您的允许列表将通过特别添加爬网程序应索引的内容来覆盖您的Disallow列表。请注意,并非所有抓取工具都是相同的,您可能希望稍后在针对仍然行为不当的任何抓取工具添加特定部分时优化该robots.txt。