从零开始:手把手教你编写高效的robots.txt文件

张开发
2026/4/21 3:20:50 15 分钟阅读

分享文章

从零开始:手把手教你编写高效的robots.txt文件
1. 什么是robots.txt文件robots.txt是存放在网站根目录下的一个纯文本文件它的主要作用是告诉搜索引擎爬虫哪些页面可以抓取哪些页面应该避开。你可以把它想象成酒店门口的请勿打扰告示牌——只不过这个告示是专门给搜索引擎看的。我第一次接触robots.txt是在管理公司官网时当时发现搜索引擎收录了一些后台测试页面。技术总监告诉我去根目录放个robots.txt把/admin/屏蔽掉就行了。果然简单几行代码就解决了大问题。这个经历让我意识到虽然robots.txt看起来简单但用好了能避免很多麻烦。这个文件有几个重要特性需要注意它只是建议而非命令道德的网络爬虫会遵守但恶意爬虫可能无视必须使用UTF-8编码保存放在网站根目录比如www.example.com/robots.txt文件名必须全小写不能写成Robots.txt或ROBOTS.TXT每个网站只能有一个robots.txt文件2. robots.txt基础语法详解2.1 核心指令解析robots.txt的语法其实非常简单主要由两种指令构成User-agent: [爬虫名称] Disallow: [禁止访问的路径]让我用实际案例来解释。假设你想屏蔽所有搜索引擎抓取后台管理页面可以这样写User-agent: * Disallow: /admin/ Disallow: /config/这里的User-agent: *表示规则适用于所有爬虫Disallow后面跟着要屏蔽的目录路径。星号(*)是通配符代表所有。我在电商项目中最常用的几个屏蔽规则包括屏蔽购物车页面Disallow: /cart/屏蔽用户个人中心Disallow: /account/屏蔽搜索结果页Disallow: /search/2.2 高级匹配规则除了基础用法robots.txt还支持一些高级匹配模式通配符匹配Disallow: /tmp/*.jpg # 屏蔽tmp目录下所有jpg文件 Disallow: /*?* # 屏蔽所有带问号的URL通常动态页面结尾符$Disallow: /.php$ # 屏蔽所有.php结尾的URL Allow: /index.php$ # 但允许首页php文件Allow例外规则Disallow: /private/ Allow: /private/public.html # 在屏蔽目录中开放特定文件我曾经帮一个新闻网站优化robots.txt他们需要屏蔽所有带参数的页面但保留静态文章。最终方案是Disallow: /*? Allow: /*.html$3. 针对不同搜索引擎的定制配置3.1 识别主流爬虫不同搜索引擎使用不同的爬虫标识常见的包括Google: Googlebot网页、Googlebot-Image图片百度: BaiduspiderBing: Bingbot搜狗: Sogou Spider你可以为特定爬虫定制规则。比如只允许Google抓取图片User-agent: * Disallow: / User-agent: Googlebot-Image Allow: /images/3.2 百度特殊处理百度爬虫有些特殊行为需要注意对robots.txt反应较慢可能需要几天生效建议同时使用百度站长平台提交死链百度蜘蛛对中文路径支持更好我在处理一个商城项目时发现百度会持续抓取已下架商品页。最终解决方案是User-agent: Baiduspider Disallow: /discontinued/ Sitemap: https://www.example.com/sitemap.xml4. 实用配置案例与避坑指南4.1 电商网站配置示例一个典型的电商robots.txt可能包含User-agent: * Disallow: /checkout/ # 结账流程 Disallow: /account/ # 用户账户 Disallow: /search/ # 搜索页 Disallow: /cart/ # 购物车 Disallow: /*?sort # 排序参数 Allow: /static/ # 静态资源 Sitemap: https://www.example.com/sitemap.xml4.2 常见错误排查我在审查客户网站时经常遇到这些问题语法错误错误User-agent:*缺少空格正确User-agent: *路径问题错误Disallow: admin缺少斜杠正确Disallow: /admin/编码问题文件必须保存为UTF-8无BOM格式中文路径需要URL编码测试工具推荐Google Search Console的robots.txt测试工具百度站长平台的robots检测在线验证器https://technicalseo.com/tools/robots-txt/记得去年有个客户抱怨百度收录了后台页面检查发现他的robots.txt放在子目录而不是根目录。移动文件后问题立即解决。这提醒我们位置错误会让整个文件失效。5. 高级技巧与SEO优化5.1 爬取频率控制大型网站可能需要限制爬取频率User-agent: * Crawl-delay: 10 # 每次抓取间隔10秒这个设置特别适合服务器资源有限的网站。我曾经帮一个新闻站设置Crawl-delay: 5服务器负载立即下降了30%。5.2 配合Sitemap使用在robots.txt底部添加Sitemap能帮助爬虫发现内容Sitemap: https://www.example.com/sitemap.xml Sitemap: https://www.example.com/news-sitemap.xml建议同时提交到各搜索引擎的站长平台双管齐下效果更好。5.3 动态参数处理对于带参数的URL推荐这样处理Disallow: /*?* # 屏蔽所有带参数的 Allow: /*?product* # 但允许产品页 Allow: /*?category* # 和分类页这种配置在电商网站特别有用既能屏蔽无意义的参数组合又能保留重要页面。6. 实际项目经验分享在最近的一个政府门户项目中我们遇到了特殊需求需要屏蔽所有PDF文件但开放年度报告PDF限制爬虫只在凌晨抓取最终方案User-agent: * Disallow: /*.pdf$ Allow: /reports/annual-report.pdf Visit-time: 0100-0500 Crawl-delay: 5这个配置实施后服务器日志显示爬虫活动集中在设定时段带宽使用更加合理。另一个值得分享的案例是国际网站的多区域配置。我们为不同地区爬虫设置不同规则User-agent: Yandex # 俄罗斯 Disallow: /en/ # 屏蔽英文版 Allow: /ru/ User-agent: Baiduspider # 中国 Disallow: /ru/ Allow: /zh/这种精细化配置使各地区收录内容更加精准。

更多文章