做站点运营的人常把一句话挂在嘴边:页面没收录。但这四个字底下其实压着至少三种完全不同的状态,每一种的排查入口和处理方式都不一样。把它们混在一起看,最典型的结果就是把时间花在错误的一层上,比如页面明明已经被抓取过,却还在反复提交 sitemap。
先把“没收录”拆成三层
从 URL 被发现到用户能在搜索结果里看到,中间大致经过抓取、处理、索引三个环节。每一环都有相对独立的信号可以观察:
- 抓取层:服务器日志里有没有这条 URL 的请求记录,抓取统计里对应目录的曲线是否变化。
- 处理层:索引状态相关报告里的“已发现未抓取”“已抓取未索引”这类中间态。
- 索引层:用 URL 检查类工具查询,看它是否真的进了索引。
三层信号对上了,问题范围基本就锁定了一半。
状态一:连抓都没抓
如果日志里长时间没有这条 URL 的请求,说明问题出在“发现”这一步,而不是内容质量。常见原因有几类:
- 站内没有可爬取的入口,链接写在脚本里,或者需要交互才出现。
- robots.txt 误屏蔽,或者整站存在不必要的抓取限制。
- URL 被放在极深的层级,从首页出发要经过很多次跳转才能抵达。
处理顺序通常是:先补内链入口,再检查 robots,最后才是提交和外部引荐。顺序颠倒的话,即使提交了,爬虫拿到 URL 之后也可能因为没有后续入口而不再回来。
状态二:抓了,但没进索引
这是最容易被误判的一层。日志显示抓取正常,很多人就以为万事大吉,实际上处理环节还有几道关卡:
- 渲染之后页面主体为空,或者主要内容依赖脚本加载。
- 内容与站内其他页面高度相似,缺少独立信息。
- canonical 指向了别的 URL,等于主动把这条页面让出去。
- 页面返回 200,但内容是一个空壳,容易被当成无效页处理。
这一层的排查重点是“这条页面本身算不算一个独立、可用的结果”,而不是“它有没有被访问过”。
状态三:进了索引,但看不到
索引里有,展示时却被更合适的页面顶掉,这属于匹配和排序的问题,不在抓取与收录的范畴。针对这种情况继续调收录手段基本无效,应该回到内容与查询意图的对应关系上去看。
把“没收录”拆开之后,很多原本无解的问题会变成一个明确的小任务:补一个入口、改一处 canonical,或者干脆承认这条页面不该收。
操作上的几点建议
- 固定一批样本 URL 长期跟踪,而不是每天换一批看。
- 记录状态变化的时间点,把观察窗口拉长到几周再下判断。
- 用表格区分“未抓取”“已抓未索”“已索未现”,避免凭印象做结论。
收录本身是搜索引擎的判断结果,站点能做的只是把入口、结构和页面质量这些可控项准备好。分清楚卡在哪一层,至少能保证力气没有用在错误的地方。