什么是robots.txt?

定义
robots.txt是位于网站根目录的文本文件,它告诉搜索引擎爬虫(机器人)哪些页面可以抓取,哪些页面不应该抓取。该文件遵循称为机器人排除协议(Robots Exclusion Protocol)或机器人排除标准(Robots Exclusion Standard)的标准。
robots.txt文件就像网站的交通警察 。它是搜索引擎机器人访问网站时首先检查的文件,通过它,机器人可以了解网站所有者的抓取政策。例如,您可以指定不希望出现在搜索结果中的区域,如管理员页面、重复内容或测试页面。
重要的一点是,robots.txt是"请求"而不是"命令"。虽然大多数合法的搜索引擎机器人(Google、Naver、Bing等)会尊重此文件中的规则,但恶意机器人或爬虫可以忽略它们。因此,仅靠robots.txt不足以保护敏感信息,还需要适当的访问控制或加密措施。
特点
- 抓取预算优化:通过阻止抓取不重要的页面,可以鼓励搜索引擎将更多资源分配给真正重要的页面。
- 防止重复内容:可以通过阻止具有相似内容的页面或由各种参数生成的重复URL来防止SEO问题。
- 指定站点地图位置:可以在robots.txt文件中指定站点地图的位置,以便搜索引擎轻松找到它。
- 简单且标准化的格式:无需特殊技术知识,可以使用文本编辑器轻松编写和修改。
- 立即生效:上传文件后立即生效,搜索引擎机器人下次访问时即应用新规则。
使用方法
以下是有效编写和管理robots.txt文件的方法。
第1步:理解基本结构 robots.txt文件基于"User-agent"和"Disallow/Allow"指令。User-agent指定规则适用于哪个机器人,Disallow指定禁止抓取的路径,Allow指定允许抓取的路径。
第2步:识别要阻止的区域 识别网站上不应向搜索引擎公开的区域。通常包括管理员页面(/admin)、个人信息页面、重复内容、测试页面、搜索结果页面、购物车或结账页面。
第3步:编写robots.txt文件 使用文本编辑器编写robots.txt文件。所有机器人的规则以"User-agent: *"开头,您还可以为特定机器人指定单独的规则。
第4步:上传到根目录 将编写好的robots.txt文件上传到网站的根目录。该文件必须以https://yoursite.com/robots.txt的形式访问。
第5步:测试 使用Google Search Console的robots.txt测试工具验证文件是否正确编写,以及所需的URL是否被正确阻止或允许。
第6步:定期审查 每当网站结构发生变化时,robots.txt文件也应该更新。定期审查以确保没有意外阻止重要页面是很重要的。
示例
示例1:基本robots.txt结构
User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /temp/
Allow: /
Sitemap: https://zero-coke.com/sitemap.xml
这是最基本的robots.txt文件。它指示所有搜索引擎机器人不要抓取admin、private和temp目录,并允许其他所有内容。最后指定了站点地图位置。
示例2:针对特定机器人的规则
# Google机器人规则
User-agent: Googlebot
Disallow: /search/
Disallow: /cart/
Allow: /
# Bing机器人规则
User-agent: Bingbot
Disallow: /admin/
Allow: /
# 图片搜索机器人
User-agent: Googlebot-Image
Disallow: /private-images/
Allow: /
# 阻止恶意机器人
User-agent: BadBot
Disallow: /
# 所有其他机器人
User-agent: *
Crawl-delay: 10
Disallow: /admin/
Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-images.xml
此示例展示了如何为不同的机器人应用不同的规则。使用注释(#)来提高可读性。
示例3:使用通配符
User-agent: *
# 阻止所有PDF文件
Disallow: /*.pdf$
# 阻止带有特定参数的URL
Disallow: /*?sort=
Disallow: /*?filter=
# 阻止具有特定扩展名的文件
Disallow: /*.php$
Disallow: /*.inc$
# 但允许特定目录
Allow: /public/*.pdf$
Sitemap: https://zero-coke.com/sitemap.xml
可以使用通配符(*)和路径结束符($)创建更复杂的规则。
示例4:电子商务网站robots.txt
User-agent: *
# 阻止用户账户相关页面
Disallow: /account/
Disallow: /login/
Disallow: /register/
Disallow: /checkout/
Disallow: /cart/
# 防止重复内容 - 排序和筛选参数
Disallow: /*?sort=
Disallow: /*?page=
Disallow: /*?filter=
# 搜索结果页面
Disallow: /search?
# 管理区域
Disallow: /admin/
# 允许产品页面(重要!)
Allow: /products/
# 设置抓取延迟(服务器负载管理)
Crawl-delay: 5
Sitemap: https://zero-coke.com/sitemap.xml
Sitemap: https://zero-coke.com/sitemap-products.xml
Sitemap: https://zero-coke.com/sitemap-categories.xml
这是可用于实际电子商务网站的综合robots.txt示例。
优缺点
优点
-
提高抓取效率:帮助搜索引擎不浪费时间和资源抓取不必要的页面,使它们能够更专注于重要内容。这对于有效管理抓取预算至关重要,特别是对于大型网站。
-
减少服务器负载:可以减少由于过度抓取造成的服务器负载。使用Crawl-delay指令可以控制机器人请求之间的间隔,以保护服务器资源。
-
简单实现:无需复杂的编程知识,只需一个文本文件即可轻松实现,并且可以立即修改。不需要单独的数据库或服务器配置更改。
缺点
-
不是安全措施:robots.txt仅仅是建议,没有强制力。恶意机器人或黑客可以忽略此文件,因此不适合保护敏感信息。实际上,在robots.txt中指定被阻止的路径可能会告诉攻击者隐藏页面的位置。
-
错误的 严重影响:如果robots.txt文件编写错误,可能会意外阻止整个网站或从搜索结果中排除重要页面。仅一个错误的条目如"Disallow: /"就可能使整个网站从搜索引擎中消失。
-
不会立即生效:即使更新了robots.txt文件,搜索引擎也可能不会立即反映。要删除已索引的页面,仅靠robots.txt是不够的,您需要在Google Search Console中单独请求删除URL。
常见问题
问:我可以使用robots.txt删除已索引的页面吗? 答:不可以,robots.txt只会阻止新的抓取,不会删除已索引的页面。实际上,使用robots.txt阻止会阻止搜索引擎重新抓取页面,因此它们无法检查更新的信息(例如noindex标签)。要删除已索引的页面,您应该首先向页面添加noindex元标签,让搜索引擎检查它,然后在robots.txt中阻止它。或者,您可以使用Google Search Console的URL删除工具。
问:如果没有robots.txt文件会怎样? 答:即使没有robots.txt文件,网站也能正常工作,搜索引擎假定所有页面都可以抓取。换句话说,一切都是允许的。对于小型网站或希望所有页面都出现在搜索结果中的网站,这不是问题,但如果有需要阻止的区域,则必须创建robots.txt文件。
问:Disallow和noindex有什么区别? 答:Disallow(robots.txt)阻止搜索引擎抓取页面,但如果该页面从其他地方链接,它仍然可能出现在搜索结果中(仅包含标题和URL,没有内容)。另一方面,noindex(元标签)允许抓取但指示该页面永远不应显示在搜索结果中。要完全从搜索结 果中删除页面,您应该使用noindex元标签,而不是robots.txt阻止。
问:通配符(*)如何工作? 答:通配符()表示零个或多个任意字符。例如,"Disallow: /admin"会阻止所有以admin开头的路径,如/admin、/admin/、/admin/users、/administrator。"$"表示URL的结尾,因此"Disallow: /*.pdf$"会阻止所有以.pdf结尾的URL。但是,并非所有搜索引擎都支持通配符,因此它们在主要搜索引擎(Google、Bing等)中有效,但可能被一些较旧的机器人忽略。