很多人把入口页做完、外链挂上,就觉得蜘蛛池这部分工作已经收尾,剩下交给蜘蛛就好。实际上蜘蛛到达入口页之后,最先面对的是两个基础文件:robots.txt 和 sitemap。它们不决定内容质量,却会直接影响蜘蛛在入口页域名上的行动路线——是先绕路、还是被挡在门外、还是拿着一份清单按部就班地抓。
robots.txt 在入口页域名上的两种写法
入口页域名通常没有真实业务目录,robots.txt 的结构也比正常站点简单,常见做法有两类:
- 全站放行,只挡无关路径。User-agent 用通配,Allow 指向根目录,再单独 Disallow 掉后台、统计、临时目录、上传目录。适合入口页数量不多、结构规整的情况。
- 放行入口页,屏蔽参数组合。如果入口页带查询参数,可以用 Disallow 挡掉明显的参数拼接形式,避免蜘蛛在参数空间里反复试探。要注意别把入口页本身也拦进去。
最容易犯的错:把入口页挡在门外
有人为了降低被识别的概率,把入口页目录整体 Disallow,然后指望蜘蛛从外链进来抓。结果往往是:蜘蛛确实来了,但抓取被 robots.txt 拒绝,服务器日志里全是"被 robots 屏蔽"的记录。这种情况下入口页等于没进池,前面做的链接也白搭。
不要在 robots.txt 里写 Crawl-delay
Crawl-delay 在不同引擎上的兼容性差异很大,有的支持,有的直接忽略。给入口页设置过大的延迟,会把本该分散的抓取强行拉长,单位时间内的 URL 发现量反而下降。控制抓取节奏更适合从入口页数量、链接位置和更新节奏上入手,而不是依赖一个延迟参数。
sitemap:给入口页一份可选清单
sitemap 的作用是告诉蜘蛛"有哪些 URL 可以看",它不保证被收录,也不提升权重,但能减少蜘蛛靠链接猜测的成本。对入口页来说有几个实际考虑:
- 新入口页优先。刚上线的入口页外链还没被爬到,sitemap 是最直接的发现路径之一。
- 分片管理。入口页数量上千之后,单个文件控制在 5 万条以内,用 sitemap index 汇总,方便按批次整份替换。
- 保持准确。文件里只放返回 200、可正常访问的地址。混入重定向、404、被 robots 屏蔽的 URL,会让蜘蛛对整份文件的信任度下降。
- lastmod 别乱写。所有条目共用同一个更新时间,蜘蛛很快会忽略这个字段。只在实际改动时更新对应条目。
常见误区
- 以为提交了 sitemap 就会被抓。它只是建议,不是指令,蜘蛛仍然按自己的判断决定抓不抓、抓多少。
- 入口页和主站共用一个 sitemap。主站文件里通常都是业务页面,混入入口页既干扰主站数据,也让入口页的更新状态难以追踪,分开更清楚。
- robots.txt 里声明了 sitemap 地址,文件本身却 404。批量部署时这种低级错误很常见,脚本跑完应该抽查一遍。
- 把 sitemap 当成隐藏 URL 的手段。它是公开文件,任何人访问根目录下的 sitemap 都能看到全部地址。
实操上的搭配建议
比较省心的组合是:入口页域名放一份全站放行的 robots.txt,只屏蔽明显的后台和临时路径,并在其中声明 sitemap 地址;入口页按批次写进分片的 sitemap,新批次上线时同步更新文件;同时保留站内链接作为第二条发现路径。两条路径并行,比只依赖其中一条更稳,也更容易从日志里对比出问题出在哪一环。
提示:sitemap 和 robots.txt 都属于基础设施,做对不会带来额外收益,做错却会让前面的入口页工作白费。上线前花几分钟抽查一遍,比事后翻日志排查要省事得多。
最后提醒一句,这两个文件解决的是"蜘蛛能不能顺利看到 URL",不解决"看到之后愿不愿意继续抓"。入口页能否被正常发现,只是整个流程中的一环,别把它当成全部。