Manual:robots.txt/zh

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


robots.txt机器人例外标准的一部分,并可帮助手册:搜索引擎优化 。它描述网络爬虫如何对一个站点建立索引。robots.txt必须被放置在网站根目录下。

-{zh-hans:示例; zh-hant:範例;}-

阻止建立所有索引

组织所有机器人建立站点页面索引的代码:

User-agent: *
Disallow: /

如果您仅仅想阻止某些网络蜘蛛,将星号替换成爬虫的用户代理即可。

阻止对非条目页面建立索引

MediaWiki生成了许多仅对真人有用的页面:例如旧版本和差异页面倾向于复制文章中的内容。 编辑页面和大多数特殊页面是动态生成的,这使得它们仅对人工编辑有用,并且服务、维护成本相对较高。 如果没有其他指示,爬虫可能会尝试索引数千个相似的页面,从而使Web服务器负载过重。

使用短URL

如果您使用的是维基百科样式的短网址,很容易防止蜘蛛抓取非文章页面。 假设可以通过/wiki/Some_title访问文章,而其他所有内容都可以通过/w/index.php?title=Some_title&someoption=blah获得:

User-agent: *
Disallow: /w/

不过要小心!如果您不小心把这条线放进去:

Disallow: /w

您将阻止访问/wiki目录,搜索引擎将删除您的Wiki!

请注意,此解决方案还会导致CSS、JavaScript和图像文件被阻止,因此Google之类的搜索引擎将无法呈现Wiki文章的预览。 要解决此问题,不需要禁止整个/w目录,只需要禁止index.php

User-agent: *
Disallow: /w/index.php?

这是可行的,因为CSS和JavaScript是通过/w/load.php检索的。 另外,您也可以像在维基媒体网站矩阵上那样进行操作:

User-agent: *
Allow: /w/load.php?
Disallow: /w/

不使用短URL

如果您没有使用短网址,则限制爬虫会更加困难。如果您正在运行PHP CGI并且没有美化URL,那么可以通过/index.php?title=Some_title访问文章:

User-agent: *
Disallow: /index.php?diff=
Disallow: /index.php?oldid=
Disallow: /index.php?title=Help
Disallow: /index.php?title=Image
Disallow: /index.php?title=MediaWiki
Disallow: /index.php?title=Special:
Disallow: /index.php?title=Template
Disallow: /skins/

如果您正在运行PHP作为Apache模块,并且没有美化URL,因此可以通过/index.php/Some_title访问文章:

User-agent: *
Disallow: /index.php?
Disallow: /index.php/Help
Disallow: /index.php/MediaWiki
Disallow: /index.php/Special:
Disallow: /index.php/Template
Disallow: /skins/

末尾没有colons(:)的行限制了这些命名空间的对话页。

非英语语言的维基可能需要在这行上方加入翻译语句。

您可能希望省略/skins/的限制,因为这将阻止访问属于皮肤的图像。 提供预览图像的搜索引擎,如谷歌,如果无法访问/skins/目录,将显示缺少图像的文章。

你也可以尝试

Disallow: /*&

因为像Googlebot这样的一些机器人接受robots.txt标准的通配符扩展,这阻止了我们不希望机器人筛选的大部分内容,就像上面的/w/解决方案一样。 然而,这确实受到了同样的限制,因为它阻止了对CSS的访问,阻止了搜索引擎正确渲染预览图像。 可以通过添加另一行Allow: /load.php来解决这个问题,但在撰写本文时,这还未经过测试。

允许Internet Archiver对原始页面进行索引

您可能希望允许Internet Archiverraw pages进行索引,以便页面的原始wikitext将被永久记录。这样,在维基瘫痪的情况下,人们可以更容易地将内容放在另一个维基上。您将使用:

# Allow the Internet Archiver to index action=raw and thereby store the raw wikitext of pages
User-agent: ia_archiver
Allow: /*&action=raw

问题

速率控制

您只能指定允许机器人爬行的“路径”。当一个超过20万页的蜘蛛每秒请求两到三页时,即使只允许普通页面区域也可能是一个巨大的负担。

一些机器人对此有自定义规范;Inktomi响应“Crawl-delay”行,该行可以指定两次点击之间的最小延迟(以秒为单位)。(默认值为15秒。)

不遵守规定的机器人程序

有时,自定义编写的机器人不是很聪明,或者完全是恶意的,根本不遵守robots.txt(或者遵守路径限制,但蜘蛛速度很快,在网站上爬行)。可能需要屏蔽特定的用户代理字符串或违法者的个人IP。

更普遍地说,request throttle可以在不需要您重复干预的情况下停止此类机器人程序。

一种替代或补充策略是部署spider trap

蜘蛛抓取与索引的对比

虽然robots.txt阻止(非邪恶的)机器人下载URL,但它并没有阻止他们对其进行索引。 这意味着,只要有指向它们的外部链接,它们仍然可能出现在谷歌和其他搜索引擎的结果中。 (更糟糕的是,由于机器人不会下载此类页面,因此放置在其中的noindex元标签将不会产生任何效果。) 对于单个wiki页面,__NOINDEX__魔法字可能是一个更可靠的选项,可以将它们排除在搜索结果之外。