专业网站运营商通常旨在使他们的网站对搜索引擎更可见。 这样做的一个要求是确保搜索机器人可以读取所有 URL,然后正确编入索引。 虽然这听起来像是一项简单的任务,但必须注意的是,搜索引擎很少完全抓取网站。 甚至 Google 收集和存储网站内容的能力也是有限的。 相反,每个域都分配了一定的抓取预算,这决定了读取的 URL 数量,并在必要时编入索引。 建议大型网站的运营商通过向搜索机器人发送信号,以战略方式解决这个话题,给定页面的哪些区域应该被抓取,哪些页面应该被忽略。 索引管理的重要工具包括:元标记中的机器人数据、规范标记、重定向以及文件 robots.txt,这就是今天给大家带来的内容。
什么是 robot.txt?
robots.txt 是存储在域根目录中的文本文件。 通过阻止网站选定部分的部分或全部搜索机器人,这些文件允许网站运营商控制搜索引擎对网站的访问。 在 robots.txt 文件中找到的信息是指整个目录树。 后一方面使该索引管理工具与仅适用于特殊 HTML 文档的元机器人数据和重定向显着不同。 在这种情况下,应特别注意“block”一词。 搜索引擎仅将 robots.txt 文件解释为指南; 这意味着它不能对搜索引擎强制任何特定的抓取行为。 谷歌和其他大型搜索引擎声称他们听从了这些指示。 但是,防止任何未经授权的访问发生的唯一方法是实施强大的密码保护措施。
创建 robot.txt
为了让搜索机器人能够访问单独的抓取指南,一个纯文本文件必须命名为“robots.txt”,然后存储在域的根目录中。例如,如果要定义域 example.com 的抓取指南,则 robots.txt 需要存储在与www.example.com 相同的目录中。通过 Internet 访问时,可以在以下位置找到此文件:www.example.com/robots.txt。如果网站的托管模型不提供对服务器根目录的访问,而仅提供对子文件夹(例如 www.example.com/user/)的访问,则无法使用 robots.txt 文件实现索引管理。设置 robots.txt 的网站运营商应使用纯文本编辑器,如 vi (Linux) 或 notpad.exe (Windows);在执行 FTP 传输时,确保文件以 ASCII 模式传输也很重要。在线,可以使用 robots.txt 生成器创建该文件。鉴于语法错误会对 Web 项目的索引产生破坏性影响,建议在上传文本文件之前对其进行测试。谷歌的搜索控制台为此提供了一个工具。
robots.txt 结构
每个 robots.txt 文本都包含由两部分组成的记录。 第一部分介绍了关键字、用户代理,并介绍了可以在第二部分中给出指令的搜索机器人。 这些说明处理爬行禁令的规则。 由关键字 disallow 启动,这些命令然后继续命名一个目录或多个文件。 结果是以下基本结构:
user-agent: Googlebot disallow: /temp/ disallow: /news.html disallow: /print
上例中的 robots.txt 仅适用于名称为“Googlebot”的网络爬虫,并“禁止”它读取目录 /temp/ 和文件 news。 此外,所有路径以 print 开头的文件和目录也会被阻止。 注意这里如何 disallow: /temp/ 和 disallow: /print 只能通过末尾缺少斜杠 (/) 来区分彼此(在语法方面); 这在 robots.txt 的语法中造成了相当不同的含义。
插入注释
如果需要,robot.txts 文件可以补充注释。 然后用前面的主题标签标记它们。
# robots.txt for http://www.example.com user-agent: Googlebot disallow: /temp/ # directory contains temporary data disallow: /print/ # directory contains print pages disallow: /news.html # file changes daily
处理多个用户代理
如果要处理多个用户代理,则 robots.txt 可以包含根据其结构编写的任意数量的块:
# robots.txt for http://www.example.com user-agent: Googlebot disallow: /temp/ user-agent: Bingbot disallow: /print/
虽然 Google 的网络爬虫被禁止搜索目录 /temp/,但 Bing bot 被阻止爬取 /print/。
解决所有用户代理
如果需要阻止所有网络爬虫的某个目录或文件,则实现表示所有用户的通配符的星号 (*)。
# robots.txt for http://www.example.com user-agent: * disallow: /temp/ disallow: /print/ disallow: /pictures/
robots.txt 文件会阻止所有网络爬虫的目录 /temp/、/print/ 和 /pictures/。
从索引中排除所有目录
如果网站需要完全阻止所有用户代理,则只需要在关键字 disallow 后加一个斜杠即可。
# robots.txt for http://www.example.com user-agent: * disallow: /
所有网络爬虫都被指示忽略整个网站。 例如,此类robot.txt 文件可用于仍处于测试阶段的Web 项目。
允许索引所有目录
网络运营商可以允许搜索机器人通过应用关键字,禁止,不带斜杠来抓取和索引整个网站:
# robots.txt for http://www.example.com user-agent: Googlebot disallow:
如果 robot.txt 文件包含不带斜杠的disallow,则整个网站可免费供用户代理下定义的网络爬虫使用。
表 1:robots.txt 的基本功能
命令 | 示例 | 功能 |
user agent: | user agent: Googlebot | 解决特定的网络爬虫 |
user agent: | 解决所有网络爬虫 | |
disallow: | disallow: | 整个网站都可以爬取 |
disallow: / | 整个网站都被屏蔽 | |
disallow: /directory/ | 特定目录被阻止 | |
disallow: /file.html | 特定文件被阻止 | |
disallow: /example | 路径以 example 开头的所有目录和文件都被阻止 |
更多功能
除了上面列出的事实上的标准功能之外,搜索引擎还支持一些允许在 robots.txt 中显示内容的附加参数。
可以在 Google 的支持部分找到以下功能。 它们基于与 Microsoft 和 Yahoo! 达成的协议。
定义异常
除了禁止之外,Google 还支持允许,robots.txt 中的另一个关键字,它可以定义被阻止目录的例外情况。
# robots.txt for http://www.example.com user-agent: Googlebot disallow: /news/ allow: /news/index.html
尽管更高级别的目录 news 被阻止,但关键字 allow 使文件“http://www.example.com/news/index.html”能够被 Google bot 读取。
阻止具有特定结尾的文件
希望阻止 Google 机器人读取具有特定结尾的文件的网站运营商可以根据以下示例使用数据集:
# robots.txt for http://www.example.com user agent: Googlebot disallow: /*.pdf$
关键字 disallow 指的是所有以 .pdf 结尾的文件,并保护这些 Google 免受机器人攻击。 星号 (*) 用作域名的通配符。 然后,此条目以美元符号完成,用作行尾锚点。
将网络爬虫推荐给站点地图
除了控制抓取行为之外,robots.txt 文件还允许搜索机器人引用网站的站点地图。 可以调用带有站点地图引用的 robots.txt ,如下所示:
# robots.txt for http://www.example.com user agent: * disallow: /temp/ sitemap: http://www.example.com/sitemap.xml
表二:扩展 robots.txt 功能
命令 | 示例 | 功能 |
allow: | allow: /example.html | 无法抓取输入的文件或目录 |
disallow: /*…$ | disallow: /*.jpg$ | 具有某些结尾的文件被阻止 |
sitemap: | sitemap: http://www.example.com/sitemap.xml | XML 站点地图位于输入的地址下 |