在百度专区里判断页面问题,先看三个可观察结果:抓取看服务器日志或抓取诊断中的访问记录,索引看用 site: 或页面检索能否找到该 URL,排名看目标词下是否出现该页面。三者是先后环节,不是同一件事。抓取成功不等于已索引,已索引也不等于有排名。下面按“从交付结果倒推”的方式,把资料、任务、责任和验收拆开。
抓取环节的交付结果是:百度蜘蛛确实来过,并且拿到了可解析的 HTML 内容。判断依据是服务器访问日志里出现 Baiduspider 的请求,状态码为 200,返回内容与用户看到的一致。
索引环节的交付结果是:该 URL 已进入百度的可检索库。判断依据是在百度搜索框输入 site:你的域名,或直接搜索完整 URL,看能否出现该页面。能出现说明大概率已索引;完全不出现,可能是未索引、被 robots 拦截,或页面质量不足。
排名环节的交付结果是:某个具体查询词的结果页中,出现了这个 URL 且位置可记录。判断依据是固定地域、固定设备、清空个性化因素后,搜索目标词并记录该 URL 是否出现及其大致位次。
把这三项分开记录,才能知道页面是没被抓、被抓没索引,还是索引了但没排上。混在一起看,容易把“没排名”误判成“没收录”。
要完成区分,需要准备以下资料,并明确谁负责、谁验收:
任务顺序建议是:先查日志确认抓取,再查索引状态,最后查排名。不要跳过前两步直接盯排名,否则无法判断问题出在哪一环。
假设你有一个产品页 /product-a,目标词是“产品A价格”,但搜索该词找不到它。按下面步骤排查:
/product-a,看是否有 Baiduspider 访问且状态码为 200。如果没有,问题在抓取环节:检查内链、sitemap、robots 是否阻碍。site:你的域名/product-a。如果结果为空,问题在索引环节:检查页面是否 noindex、内容是否过薄、是否与其它页面高度重复。这个例子的适用条件是:你已有一个可访问的页面,且能拿到日志和检索结果。判断结果是:日志有记录但 site: 无结果,说明抓取成功但未索引;site: 有结果但目标词无该 URL,说明已索引但未获得该词排名。两者要采取的动作完全不同。
第一种,site: 有结果不等于该词有排名。site: 只说明 URL 在库里,排名还要看具体查询词和竞争情况。
第二种,页面被抓取不等于内容被正确解析。如果返回的是空壳 HTML、主要靠 JavaScript 渲染,蜘蛛可能拿到了页面但拿不到正文,这会同时影响索引和排名。判断方法是对比日志中返回的 HTML 与浏览器渲染后的内容。
第三种,排名波动不等于索引丢失。某天目标词位次下降,先复查 site: 是否仍在,再判断是排名变化还是索引被移除。不要一看到位次下降就重新提交收录。
第四种,不同查询词的索引与排名状态可能不同。一个 URL 可能对长尾词有排名,对核心词没有。记录时要写清具体查询词,不能只写“有排名”或“没排名”。
完成一次区分后,为每个目标 URL 建一行记录:抓取是否有日志、索引是否可检索、目标词是否出现该 URL、检查日期。下次复查时对比同一行,就能判断变化发生在哪一环,而不是凭感觉调整。若你手上还没有日志权限,先向运维申请只读的访问日志导出,这是继续排查的前提。