两个文件,管的事不一样
robots.txt 是一份放在根目录的约定文件,用来告诉蜘蛛哪些路径不必抓、抓取间隔可以放多宽;sitemap 则是一份地址清单,把入口页的 URL 集中列出来,方便蜘蛛按图索骥。前者做减法,后者做加法。很多入口页上线后长时间没有动静,问题常常出在这两个文件:要么 robots.txt 把整站拦住了,要么 sitemap 里全是过期地址,蜘蛛跑一趟发现都是死链,下次自然来得少了。
robots.txt:先把门打开
最容易出错的几处
- 全站 Disallow:测试环境的规则被同步到线上,蜘蛛连首页都进不去。
- User-agent 写错:写成具体蜘蛛名却拼错,或只写 Disallow 不写 User-agent,规则可能不按预期生效。
- 屏蔽了 CSS 与 JS:部分蜘蛛渲染页面时需要这些资源,屏蔽后可能判断页面结构异常。
- Crawl-delay 设得过大:部分蜘蛛支持这个字段,间隔太长会明显拖慢发现速度。
- 把 sitemap 的地址写在了不该出现的位置,或与拦截规则混在一起,注释和顺序要分清。
检查方法很朴素:用浏览器直接访问 /robots.txt,看返回的是不是线上那一份;再用不同 UA 抓一次首页,确认没有被 403 或 503 拦住。
sitemap:给蜘蛛一份可用的清单
数量与分片
单个文件的地址数控制在协议建议的上限内,超出就分片,并在 sitemap 索引里互相引用。入口页数量增长较快时,按上线批次或目录切分,比全部塞进一个文件更容易定位问题。
lastmod 要如实
把 lastmod 统一刷成当天,短期看起来"更新很勤",但蜘蛛回访后发现内容没变,这个字段的可信度会下降。只改时间戳而不改内容,对重访没有实际帮助。
只放可访问的地址
已下线的入口页要从清单里移除,或让它返回明确的 404、410。清单里混着大量失效地址,会消耗蜘蛛在站点上的抓取预算。
两者配合的几种常见情形
- 新入口页刚上线:先确认 robots.txt 未拦截,再把地址加入 sitemap 并提交。
- 入口页批量扩张:sitemap 分片更新,同时观察服务器日志里蜘蛛对新路径的请求情况。
- 入口页改版换地址:旧地址做 301 指向新地址,sitemap 里换成新地址,旧地址逐步清理。
- 临时下线维护:不要用全站 Disallow,改为对维护页面返回 503 并带上 Retry-After。
上线前的一份小检查
- robots.txt 能正常返回 200,内容与预期一致。
- sitemap 地址可访问、格式正确,索引文件能展开到子文件。
- 抽查若干入口页,确认返回 200,且不是软 404。
- 日志中能看到对应蜘蛛的请求,路径与 sitemap 中一致。
- 没有把入口页放在需要登录、验证码或特殊 Header 才能访问的路径下。
这两个文件解决的是"能不能被发现、发现得顺不顺利",至于最终是否收录、排名如何,还取决于站点整体质量与蜘蛛自身的判断。