本文约 2,643 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:等了三个月,搜索引擎根本没来过
最常见的求助是这样的:站点上线三个月,文章发了一百多篇,在百度里 site: 一下什么都没有,用完整标题去搜也搜不到。站长第一反应是“内容不行”,于是继续加量发文,又等两个月,依然没动静。
真实原因分布其实很集中:大约一半是新站处在正常的观察期内,另一半是技术层面根本没让爬虫进来——robots.txt 屏蔽、服务器返回非 200、DNS 或证书异常、站点地图没提交、或者站点结构让爬虫进得来却爬不深。更麻烦的是这两种情况的表现完全一样:都是“搜不到”。所以必须按固定顺序逐项排除,而不是凭感觉加内容。
原理分析:收录链条上有五个断点
收录不是一个动作,而是一条链:发现 URL → 抓取 → 解析 → 判定质量 → 存入索引 → 参与排序。任一环断了,表现都是“搜不到”。
| 断点 | 典型表现 | 可验证方式 |
|---|---|---|
| 服务器不可达 | 抓取诊断超时 | 多地区 curl / 在线拨测 |
| 状态码异常 | 返回 403/500/302 | curl -I 看首行 |
| robots 屏蔽 | 明确提示“被 robots.txt 屏蔽” | 直接访问 /robots.txt |
| 无入口链接 | 只有首页被抓,内页从未被发现 | 看日志中 Baiduspider 的访问路径 |
| 质量判定不通过 | 抓取成功但索引量为 0 | 平台“索引量”与抓取量对比 |
还要理解一个新站的现实:没有外部链接、没有历史记录,爬虫的抓取预算分配极低。你可能一天只有几次抓取机会,如果这些机会都消耗在无价值的标签页、分页和参数 URL 上,正文页面就永远排不上号。
保姆级实操
步骤 1:先确认服务器对爬虫是可达的。 不要只在自己浏览器里打开,要用命令行模拟爬虫 UA 看真实响应头。
# 1) 看首页对百度爬虫返回的真实状态码(注意是否被 WAF/防火墙拦截)
curl -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" \
-I https://www.example.com/ -L --max-time 15
# 2) 确认 robots.txt 可被匿名访问且内容正确
curl -A "Baiduspider" -s https://www.example.com/robots.txt
# 3) 看 DNS 解析与证书是否正常
curl -sS -o /dev/null -w "dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} total:%{time_total}\n" \
https://www.example.com/
# 4) 抓一张内页,确认正文内容在服务端返回的 HTML 里(而不是靠 JS 渲染)
curl -s https://www.example.com/some-post/ | grep -c "文章正文里的关键词"
步骤 2:用百度搜索资源平台的抓取诊断复核。 在平台里提交首页与一篇典型内页,看返回的状态码和“页面源码”。如果诊断能正常拿到源码,说明服务器与 robots 没问题,问题在后面几环。
步骤 3:检查 robots.txt 是否误伤。 最常见的是 WordPress 后台「设置 → 阅读 → 搜索引擎可见性」被勾选,它会输出 Disallow: /。如果站点需要被收录,务必取消勾选。
步骤 4:提交站点地图并保持更新。 在平台「普通收录 → 资源提交 → sitemap」里提交完整绝对 URL 的地图地址;同时把链接提交中的「手动提交」和「自动提交」(JS 代码或 API 推送)用起来,新文章发布即推送,能显著缩短发现周期。
步骤 5:收敛无效 URL 空间。 把标签页、作者页、日期归档、搜索结果页、带参数的 URL 用 robots 或 noindex 收敛掉,让有限的抓取预算集中在正文页。具体写法可以参考 robots.txt 与 noindex 的正确用法。
步骤 6:确认内容本身过了及格线。 单篇正文少于 300 字、标题由模板拼接、正文是采集拼装的页面,即使被抓取也不会进索引。先保证 10–20 篇真正有信息量的页面,再谈规模。
步骤 7:给站点一个入口。 至少获得少量来自其他已收录站点的链接(行业目录、上下游合作站点、自媒体主页),让爬虫有第二条路径发现你。
常见踩坑
- 只查首页不查内页。 首页收录而内页不收录,问题往往在内链结构和文章质量,不在服务器。
- robots.txt 里写了
Disallow: /wp-content/或Disallow: /wp-includes/。 这会阻止爬虫加载 CSS/JS,导致页面被判定为无法正常展现。 - 站点地图里混入了 noindex 或已 404 的 URL。 会降低整个地图的可信度。
- 服务器开启了按 UA 的防火墙规则,把爬虫当 CC 攻击拦了。 看日志里是否有大量 403/429 记录。
- 证书链不完整。 浏览器能打开不代表爬虫能验证,务必用工具检查中间证书。
- 用 JS 渲染正文。 服务端返回的 HTML 里没有正文,抓取诊断里看到的就是空壳。
- 每天机械发文二十篇。 低质内容会拉低整站基线,反而延长观察期。
- 案例: 一个 WordPress 站三个月零收录,所有配置看起来都正常。最后在服务器日志里发现,安全插件把 UA 里含 “spider” 的请求全部按 CC 防护规则返回了 429,百度爬虫从第一天起就没拿到过任何一个 200 响应。把搜索引擎 UA 加入白名单后第七天,首页被收录,两周后内页开始批量进入索引。服务器日志是排查收录问题最被低估的证据源。
总结
排查顺序必须是由外到内:服务器连通与状态码 → robots 与后台开关 → 抓取诊断实证 → sitemap 与推送 → URL 空间收敛 → 内容质量 → 外部入口。每一步都有明确的可验证结果,不要跳步。判断标准也简单:如果抓取诊断能拿到正确源码且内页有入口链接,剩下的就只是时间和内容质量;如果诊断本身失败,那就别再发文了,先把技术问题解决掉。
