入口页链接排得再规整,如果 robots.txt 写错一行,搜索蜘蛛可能连门都进不来。robots.txt 是最容易被忽略、也最容易被一刀切写坏的文件。它管的是能不能抓,而不是能不能收录,把这两件事分开看,很多疑问就清楚了。
robots.txt 管抓取,不决定收录
搜索蜘蛛在访问一个 URL 之前,通常会先读取该域名根目录下的 robots.txt,确认自己是否有权限抓取。被 Disallow 的路径,正常情况下蜘蛛不会去请求,也就谈不上从页面里发现并跟进外链。反过来,允许抓取也不等于会被收录,后者还要看内容质量、重复程度、站点整体情况等因素。入口页的价值在于给搜索蜘蛛提供一条“发现 URL 的路”,而 robots.txt 决定这条路通不通。
几种常见的误配置
- Disallow: /:整站禁止抓取。不少人调试时临时加上,上线后忘了删,结果入口页和目标链接都进不了抓取队列。
- 规则写得太宽:例如 Disallow: /*.html 或 Disallow: /go/,本意是屏蔽某些目录,却把入口页所在路径一起盖住。前缀匹配是很常见的坑。
- 大小写和斜杠不一致:/Entry 与 /entry 在多数实现里是区分大小写的,写错要么等于没屏蔽,要么屏蔽了不该屏蔽的路径。
- 只给特定 UA 写规则:为某个搜索引擎单独写了一段 User-agent,却漏了通用段里的 Allow,其他蜘蛛进来就全被挡住。
想让入口页被抓,该怎么写
- 先确认入口页所在路径是允许抓取的,最省事的做法是不对它写任何 Disallow 规则。
- 如果必须屏蔽站内某些功能目录,规则写具体,例如 Disallow: /search/、Disallow: /cart/,避免用大范围通配。
- 为需要抓取的路径补 Allow 规则。多数搜索引擎是按最长匹配判断,而不是谁写在前面谁优先。
- 在文件末尾写一行 Sitemap,指向你的 sitemap 地址,给蜘蛛多一条发现路径。
- 保存后直接用浏览器访问域名下的 /robots.txt,确认返回 200 且内容是最新版,而不是旧缓存。
Crawl-delay 和 Sitemap 声明
Crawl-delay 只被部分搜索引擎支持,而且限制的是整站抓取间隔。入口页如果链接较多,又设了较大的 Crawl-delay,蜘蛛在单位时间内能跟进的 URL 数量会明显减少。没有特殊原因,不建议在入口页所在域名上设置这个参数。Sitemap 声明属于加分项,它不会覆盖 Disallow,被屏蔽的 URL 写进 sitemap 也不会因此被正常抓取。
robots.txt 不是收录开关。允许抓取只是让搜索蜘蛛有机会访问,能不能进索引、以什么形式展现,仍然由搜索引擎判断。
怎么验证有没有被挡住
最直接的方法是看服务器日志,筛选各搜索引擎蜘蛛的 UA,观察它有没有请求过入口页 URL。如果日志里只有首页和 robots.txt,入口页一次都没出现,就要回头检查规则。其次可以用站长平台提供的 robots 测试工具,输入入口页 URL,看返回的是“允许”还是“被阻止”。改完规则不要指望立刻生效,蜘蛛重新读取 robots.txt 需要时间,通常要等下一轮回访。
小结
入口页的 robots.txt 原则其实很简单:该抓的路径不要挡,要挡的路径写清楚。规则越少越不容易出错,改完用日志和测试工具核对一次,比反复猜测靠谱。