

“搜不到”是一个观察,不是一个结论。它至少对应两种完全不同的处境:一是这个URL根本没有进入Google的索引;二是它已经进入索引,只是在你用的那个查询词下没有展示,或者展示位置靠后。这两类问题的下一步动作几乎不重叠,所以排查的第一件事不是找原因,而是分流。
分流的判断依据是URL级的索引状态,而不是排名和流量。排名反映的是某个查询下的相对位置,流量反映的是一段时间内的访问结果,两者都可能因为查询词选择、竞争页面变化、展示形式变化而波动,却无法回答“这个URL在不在索引里”。用排名差或流量下降反推“不收录”,会把表现问题误判成收录问题,随后所有的检查动作都会打偏。
Google的官方说明也把“没有收录”和“已经收录但搜索表现不佳”作为两种需要分开处理的情况(参见Google 搜索结果中找不到网页)。
同样不能当作收录证据的是site搜索。site搜索返回的数量是一个粗略的、会随时间与查询写法变化的观察值,它既不等于索引总量,也不能证明某个具体URL是否被收录。它可以用来看“这个域名下大致有没有页面被索引”,但不能用来对单个URL下结论。真正需要回答的是:我关心的这个URL,Google记录了什么状态。
分流之前还要确认一件事:目标URL与查询词是否对应。很多时候读者搜的是一个品牌词或品类词,而目标页面是一篇长尾内容页,这种情况下“搜不到”本身是正常的,它既不是未收录,也不是表现不佳,而是查询与页面不匹配。先把URL原文写下来,再确认你期望它出现在哪个查询下,这一步做完,后面的判定才有对象。
分流的结果只有两种走向。如果索引状态显示该URL已被索引,那么问题属于表现层面,应转向查询匹配、页面与查询意图的对应关系,而不是继续查抓取和索引指令。如果索引状态显示该URL未被索引,或者工具给出了某种排除说明,才进入收录链条的逐段判定。
把“搜不到”落到具体URL上,靠的是URL级的检查工具。Search Console提供的网址检查能力会给出两类信息:一类是该URL的索引信息,反映Google已经记录的状态;另一类是实时测试,反映此刻能否抓取这个URL(参见检查单个网页)。这两类信息不能互相替代,必须分开读。
索引信息回答的是“Google目前对这个URL记录了什么”,它可能显示已被索引,也可能显示未被索引并附带某种说明。实时测试回答的是“如果现在去抓,会发生什么”,它会实际请求该URL并报告结果。官方文档明确指出,索引数据不是实时测试,实时测试也无法预测Google最终会选择哪个规范网址(参见网址检查工具说明)。
这意味着你不能用实时测试通过来推断“它一定被收录”,也不能用索引信息里的旧状态来推断“现在一定抓不到”。
读这两类信息时,要把发现、抓取、是否允许编入索引、以及被选定的规范网址分开看(参见网址检查工具说明)。这四项对应链条上的不同环节,混在一起读就会得出错误结论。例如实时测试成功只说明抓取环节此刻通畅,不说明这个URL已经被索引,也不说明Google选定的规范网址就是它本身。
还有一个容易踩的坑:工具里缺少引用页信息,不等于这个URL没有任何引用页。官方文档明确说明,缺少引用页信息并不能证明不存在引用页(参见网址检查工具说明)。因此当工具没有列出引用来源时,正确写法是“工具未显示引用页”,而不是“该URL没有内链或外链”。这条边界直接决定了你下一步是去补入口,还是去别处找原因。
记录时至少写下四样东西:URL原文、检查时间、检查方式、以及工具给出的原文描述。把工具报告的事实和你自己的推断分开写,例如“工具显示未被索引”是事实,“因为内容太薄所以没被索引”是推断。这一步做扎实,后面四类判定才有可核对的依据。
未发现指的是Google还没有把这个URL纳入待处理的集合。它的典型特征是:工具里没有关于该URL的抓取或索引记录,实时测试可能可以抓取,但没有任何迹象表明它曾被处理过。判定未发现,靠的是检查这个URL有没有进入发现路径。
第一项检查是站内入口。从首页出发,经过导航、分类页、相关文章、分页等路径,能否用链接一步步走到这个URL。如果这个URL只能通过站内搜索框、表单提交或某个需要交互才生成的链接到达,那么它很可能没有被常规的链接路径覆盖。注意这里的判断依据是“是否存在可抓取的链接路径”,而不是“页面上有没有这个链接的文字”。
第二项检查是站点地图。确认站点地图文件里是否包含这个URL,以及站点地图本身是否可访问、是否被正确引用。站点地图是发现路径的一种补充,它不保证收录,但缺少它会让新URL的发现更依赖内链。
第三项检查是robots.txt是否阻止抓取。这里要特别小心一个常见混淆:robots.txt阻止抓取,和页面上的noindex指令,是两件不同的事。官方文档说明,Google必须被允许抓取页面,才能看到页面上的noindex指令;阻止robots.txt访问并不等同于noindex指令(参见noindex 官方说明)。也就是说,如果一个URL被robots.txt挡住,Google看不到它,也看不到它上面的noindex,Google仍可能通过链接知道这个URL,甚至在无法抓取正文时显示其地址;仅凭robots.txt阻止抓取,不能断定它未被发现或未被索引。把这两种情况混为一谈,会导致你去改一个根本没被读到的标签。
第四项检查是这个URL是否从未被外部引用。如果它既没有站内链接路径,也不在站点地图里,又没有外部页面指向它,那么它停留在未发现状态是符合预期的。此时下一步动作是补一条可抓取的入口路径,而不是去改页面内容。
这一节要避免的误判是:把“工具没显示引用页”直接写成“没有引用页”。按上一节的边界,工具未显示引用页只是未显示,不能作为不存在引用页的证据(参见网址检查工具说明)。正确做法是另行核对站内链接与站点地图,再下结论。
未抓取指的是URL已经进入发现路径,但抓取动作没有完成。它和未发现的区别在于:有迹象表明Google知道这个URL存在,但没有成功取回内容。判定未抓取,要区分“抓取被阻止”和“抓取尚未发生”两类情况,因为它们的处理方式不同。
第一项检查是robots.txt对具体路径的规则。不要只看有没有robots.txt文件,要看针对这个URL所在路径的具体规则,包括通配符和目录级规则是否覆盖到了它。规则命中的路径会被阻止抓取,此时Google无法取回页面内容,也就无法读取页面上的任何索引指令(参见noindex 官方说明)。这种情况下,页面上的noindex标签不会被看到,改标签没有意义,要改的是抓取许可。
第二项检查是服务器返回的状态码与响应。实时测试会实际请求该URL,返回的状态码和响应内容能说明此刻服务器是否正常响应。如果返回的是错误状态或异常响应,抓取就无法完成。这里要记录的是工具报告的实际返回结果,而不是推测服务器“应该没问题”。
第三项检查是是否存在抓取频率或配额方面的限制迹象。这类迹象通常表现为抓取发生得很慢、间隔很长,而不是完全被拒绝。它和“被阻止”的区别在于:被阻止是规则层面的不允许,抓取延迟是资源调度层面的排队。两者的下一步动作不同,前者要改规则,后者要观察是否随时间推进。
第四项是区分“抓取被阻止”与“抓取尚未发生”。如果robots.txt规则明确命中该路径,属于被阻止;如果规则没有命中、服务器响应正常,但工具里仍没有抓取记录,那么更可能是抓取尚未发生。此时不要急着改页面,先确认发现路径是否稳定、站点地图是否包含该URL,再观察一段时间。
这一节要避免的误判是:把实时测试可抓取当成“已经被抓取”。实时测试是此刻的一次请求,它证明的是当前可抓取性,不证明历史上发生过抓取,也不证明该URL会被索引(参见网址检查工具说明)。同样,实时测试也无法预测Google最终选定的规范网址(参见网址检查工具说明),所以即使抓取成功,也不能据此断定这个URL就是被索引的那一个。
到这里,四类状态中的前两类判定路径已经完整:未发现看发现路径,未抓取看抓取许可与响应。为了让判定过程可复核、可交接,建议把每次检查按固定字段记录下来,避免把推断写成事实。
| 目标URL | 检查时间 | 检查方式 | 判定类别 | 支撑证据 | 事实与推断分界 | 未确认项 | 下一步动作 |
|---|---|---|---|---|---|---|---|
| (填写URL原文) | (填写检查时间) | (填写所用工具与操作) | (未发现/未抓取/抓取未收录/重复规范化) | (填写工具报告原文) | (哪部分是报告事实,哪部分是推断) | (列出尚未核对的项) | (填写具体动作) |
使用这张表时,每一行只对应一个URL,判定类别先记录本次排查的起点,同时保留已观察到的其他阻塞项,不强迫多故障页面只归入一类。支撑证据一栏写工具报告的原话或原始结果,不要写结论性描述。事实与推断分界一栏是这张表的核心:把“工具显示未被索引”和“因为内容质量低所以未被索引”分开写,后者属于推断,需要额外证据才能升级为事实。未确认项一栏要如实留空或写明,不要用推断填补。
这张表在缺少Search Console的情况下同样可用,但能填的字段会受限。没有Search Console时,你可以检查robots.txt规则、服务器返回状态码、站内链接路径、站点地图是否包含该URL,以及页面上的索引相关指令是否可被抓取到。你无法确认的是:Google是否已经记录了这个URL、它被归入哪一类排除说明、以及Google选定的规范网址是哪一个。这些属于工具报告才能提供的信息,缺失时应在未确认项里写明,而不是用推断替代。
把这张表填完,你可以列明已确认状态和证据;没有足够信息时,结论应保留为未确认。下一步是修抓取许可、修索引指令,还是修规范化信号,取决于判定类别落在哪一段。
走到这一步,前提是抓取环节已经通过:服务器返回正常状态码,robots.txt 没有挡住该路径,页面也确实被抓取过。此时“搜不到”的原因不在抓取,而在抓取之后的处理。需要提醒的是,抓取成功不等于会被索引,索引也不等于会在某个具体查询下获得展示,这三件事必须分开判断。
最直接的一步是查看页面返回的 HTML 中是否存在 noindex 指令。这里有一个常见误判:如果 robots.txt 阻止了抓取,Google 无法读取页面上的 noindex,两者不能互相替代。也就是说,用 robots.txt 屏蔽一个页面,并不等于告诉搜索引擎不要索引它;反过来,如果页面已经被 robots.txt 挡住,你也就无法通过页面上的 noindex 来控制索引结果。检查时应同时确认响应头中的 X-Robots-Tag 与 HTML 中的 meta 指令,两者都可能携带 noindex。
原始HTML没有正文不等于Google一定无法收录。Google能够渲染JavaScript,但资源加载失败、登录限制或必须点击后才请求正文,会带来额外风险。应同时检查原始响应、网址检查中的渲染HTML以及资源错误,确认Google实际拿到了什么。返回验证页、错误页或占位内容时,应先修复内容可访问性。
如果正文只存在于脚本渲染后,先核对渲染结果,而不是直接将客户端渲染判为未收录原因。参见Google JavaScript SEO基础。
如果页面可解析、没有 noindex,仍未被索引,需要检查它是否与其他 URL 高度重复。同一内容存在多个可访问地址时,搜索引擎可能只选择其中一个进入索引,其余地址即使被抓取也不会单独收录。此外,索引是有选择性的,并非每个被抓取的 URL 都应该被收录,重复内容被正确排除属于正常结果,不应直接解读为故障。
本节的可核对因素可以归纳为四项:是否返回 noindex 指令、内容是否可被解析、是否存在登录或交互依赖、是否与其他 URL 高度重复。这四项都属于页面级观察,不需要依赖内部数据即可完成。
上一节排除了页面级阻塞后,还有一种情况会让 URL 看起来“不收录”:它其实被抓取、被处理,只是最终进入索引的是另一个地址。此时用目标 URL 去搜索看不到结果,并不代表内容没有被收录。
第一步是查看页面上的 canonical 标签指向哪个地址。如果 canonical 指向了另一个 URL,那么搜索引擎很可能把索引记在那个地址上。需要注意,canonical 是提示而非强制指令,搜索引擎会综合判断,因此 canonical 指向 A 而实际收录在 B 的情况是可能存在的。判断时不能只看标签写了什么,还要确认收录结果实际落在哪个 URL 上。
如果目标 URL 发生跳转,需要完整走一遍重定向链,确认最终落地的地址。多跳跳转、跳转到无关页面、跳转链中途出现循环,都会让原始 URL 无法作为独立条目被收录。检查时应记录每一跳的状态码与目标地址,而不是只记录第一跳。
同一路径可能因为查询参数、大小写、结尾斜杠、协议或域名前缀的差异产生多个可访问地址。这些变体如果都能返回正常内容,就会形成重复,搜索引擎可能只保留其中一个。判定方法是把已知变体逐一访问,确认哪些返回正常内容、哪些发生跳转,再对照实际收录的地址。
完成上述检查后,应明确写出结论:收录落在哪个 URL 上,该 URL 与目标 URL 是什么关系(同一内容的不同地址、跳转后的最终地址、还是完全不同的页面)。如果确认是规范化导致,下一步要判断的是是否需要调整规范化信号,而不是继续在“为什么没收录”上打转。
前面几节的判定,有一部分依赖 Search Console 提供的索引信息与实时测试。如果没有 GSC 权限,检查范围会明显收窄,必须把“可确认”和“不可确认”分开,避免把推断写成事实。
在没有 GSC 的情况下,以下内容可以直接从外部观察:
这些检查足以支撑“是否存在页面级阻塞”和“是否存在规范化指向”这两类判断。
同样重要的是明确边界。没有GSC时,不能仅靠公开页面确认Google报告的索引状态或所选规范网址。但经身份验证的Googlebot服务器日志可以证明某次实际请求的时间、路径和响应状态;仅凭User-Agent名称不够,且日志请求也不证明已收录。参见验证Googlebot身份。
因此,在缺少 GSC 时,判定记录中必须把相关结论标注为未确认,而不是写成“未被收录”或“已被抓取”。如果后续获得 GSC 权限,应优先用索引信息与实时测试来补齐这部分,并注意索引信息反映的是已记录状态,实时测试反映的是当下抓取结果,两者不能互相替代。
判定做完之后,如果不留下可复核的记录,下一次遇到同类问题仍会从零开始,而且很容易把当时的推断当成事实沿用。记录的目的不是归档,而是让结论可以被复查、被推翻、被更新。
沿用前文的URL记录表,保留检查日期、实际响应和修改时间,不重复建立另一张空表。
填写时有几条规则需要遵守。先记录未发现、未抓取、抓取未收录或重复规范化这类观察状态;证据不足时写未确认,多项已确认问题可以并列。支撑证据必须是可直接复核的观察结果,例如状态码、响应头内容、canonical 指向、重定向链、robots.txt 规则,而不是“感觉内容质量不够”这类判断。事实与推断分界一栏,用来写明哪些结论来自直接观察、哪些属于推测;例如“页面返回 200 且无 noindex”是事实,“因此应该能被收录”是推断,两者不能混写。
未确认项一栏,专门记录因缺少 GSC 而无法验证的内容。
记录完成后,下一步动作由判定类别决定,而不是由主观感受决定:
如果判定类别落在“未确认”范围内,下一步动作应当是补齐证据,而不是直接修改页面。在证据不足时改动 canonical 或 robots 规则,可能把原本正常的状态改坏,而且会让后续判定失去可比对的基线。
最后需要强调的是,site 搜索数量、排名表现和流量变化都不能作为单个 URL 收录状态的完整证据。它们反映的是结果层面的现象,无法区分未发现、未抓取、抓取未收录与重复规范化这四种状态。只有把状态落到具体 URL 上,并记录支撑该判定的证据,后续的检查与修改才有明确方向。
核验来源:Google Page indexing report。
不是。实时测试回答当前访问与部分可索引条件是否正常,索引报告反映Google已记录的版本。应把最近抓取时间与修复上线时间比较;测试通过和请求编入索引都不是收录保证。
如果有服务器日志,并验证了Googlebot身份,可以确认具体请求发生过。只有公开URL返回200,或日志里出现自称Googlebot的User-Agent,都不足以证明真实抓取,更不能证明收录。
不一定。如果完整正文已在返回HTML或渲染后的DOM中,按钮只是改变显示状态,与点击后才请求正文不同。应在不点击按钮的条件下检查HTML与Google渲染结果;不要只根据视觉折叠作判断。
修复并验证后,可在GSC请求编入索引并记录时间。不需要反复提交相同URL来证明工作量;重复请求不保证加快抓取。下一次复查重点是是否有修复后的新抓取,以及报告状态有没有变化。参见请求重新抓取。
先分开看目标查询、展现和页面点击。已收录说明URL具备参与搜索的基础,不说明它匹配目标词或已有排名。此时应检查搜索意图、同站竞争页面与内容差距,而不是继续把流量为零写成未收录。
还没有评论,来发表第一条吧。