同一个 URL,浏览器里能看到完整正文,搜索引擎索引里却可能只有导航和页脚。这类问题多半不是“没被收录”,而是索引拿到的内容版本和你看到的不一样。
为什么会有两个版本
搜索引擎抓取时拿到的是服务器返回的 HTML,之后才可能执行页面里的 JavaScript。如果正文、标题、价格、评论这些内容都靠脚本在浏览器里拼接出来,那么第一版 HTML 里就只有容器和脚本。渲染能否补上内容,取决于搜索引擎愿不愿意为这个页面花渲染资源,以及脚本有没有被屏蔽、有没有报错。
所以判断收录问题时,要区分两件事:URL 有没有进索引,和索引里存的是哪一版内容。
按这个顺序确认索引拿到的版本
- 先看原始响应。关掉 JS 或用命令行抓取该 URL,看返回的 HTML 里有没有正文文本、标题、面包屑、内链。
- 再看渲染后的结果。用浏览器的查看元素或抓取工具渲染一次,对比两版差异。
- 检查资源是否可抓取。robots.txt 里被屏蔽的 JS、CSS、接口请求,都会让渲染结果残缺。
- 看索引中的摘要。搜索结果里的标题和描述如果明显来自导航或模板,基本可以确认索引里拿到的是空壳。
- 最后才回到内容质量与收录判断,避免把渲染问题误判成低质页面。
几种典型的“空壳”形态
- 正文由接口返回后写入,首屏 HTML 里没有文本节点。
- 标题和 meta 描述由脚本写入,HTML 里是默认值或空值。
- 列表条目靠滚动加载,第一屏之外的内容抓取不到。
- 分页、下一篇、相关推荐由脚本生成,内链入口在原始 HTML 里不存在。
- 文字被做成图片或写在 canvas 里,索引里没有可读文本。
- 内容藏在标签页、折叠面板、弹窗里,默认不展开。
处理方式与取舍
优先做服务端可见化
对内容页来说,最稳的方式是让正文、标题、主内链在服务器返回的 HTML 里就存在,客户端脚本只做增强。服务端渲染、静态生成、预渲染都属于这条路子,选哪种取决于站点规模和更新频率。
其次补关键信息
如果整站改造周期长,可以先把最重要的一批页面,比如栏目首页和核心详情页,在 HTML 里补齐标题、摘要、正文首段和主要内链,其余页面逐步处理。
不要给搜索引擎单独准备一份内容
返回与用户所见明显不同的内容,风险和收益不成比例。更合适的做法是让同一份内容在两种环境下都可读。
顺带检查收录入口
渲染问题解决后,URL 才知道自己该被谁发现:站内链接是否在原始 HTML 里出现、sitemap 里的地址是否与最终地址一致、canonical 是否指向同一个版本。这些都没问题,剩下的才是抓取和收录节奏的事。
如果只有少量页面出现空壳,先看模板;如果是整站,先解决渲染链路,再谈页面质量与收录策略。