同一個 URL,浏览器里能看到完整正文,搜尋引擎索引里却可能只有導航和頁脚。這類問题多半不是“没被收錄”,而是索引拿到的内容版本和你看到的不一样。
為什么會有两個版本
搜尋引擎抓取时拿到的是服務器返回的 HTML,之後才可能执行頁面里的 JavaScript。如果正文、标题、價格、评论這些内容都靠脚本在浏览器里拼接出来,那么第一版 HTML 里就只有容器和脚本。渲染能否补上内容,取决于搜尋引擎愿不愿意為這個頁面花渲染资源,以及脚本有没有被屏蔽、有没有报错。
所以判断收錄問题时,要区分两件事:URL 有没有進索引,和索引里存的是哪一版内容。
按這個顺序確認索引拿到的版本
- 先看原始响應。關掉 JS 或用命令行抓取该 URL,看返回的 HTML 里有没有正文文本、标题、面包屑、内鏈。
- 再看渲染後的结果。用浏览器的查看元素或抓取工具渲染一次,對比两版差异。
- 检查资源是否可抓取。robots.txt 里被屏蔽的 JS、CSS、接口請求,都會让渲染结果残缺。
- 看索引中的摘要。搜尋结果里的标题和描述如果明顯来自導航或模板,基本可以確認索引里拿到的是空壳。
- 最後才回到内容质量與收錄判断,避免把渲染問题誤判成低质頁面。
几種典型的“空壳”形態
- 正文由接口返回後寫入,首屏 HTML 里没有文本节点。
- 标题和 meta 描述由脚本寫入,HTML 里是預設值或空值。
- 列表條目靠滚動加载,第一屏之外的内容抓取不到。
- 分頁、下一篇、相關推荐由脚本生成,内鏈入口在原始 HTML 里不存在。
- 文字被做成图片或寫在 canvas 里,索引里没有可讀文本。
- 内容藏在标簽頁、折叠面板、彈窗里,預設不展開。
處理方式與取舍
優先做服務端可见化
對内容頁来说,最稳的方式是让正文、标题、主内鏈在服務器返回的 HTML 里就存在,客戶端脚本只做增强。服務端渲染、静態生成、预渲染都属于這條路子,選哪種取决于站点規模和更新频率。
其次补關键信息
如果整站改造周期長,可以先把最重要的一批頁面,比如栏目首頁和核心詳情頁,在 HTML 里补齐标题、摘要、正文首段和主要内鏈,其余頁面逐步處理。
不要给搜尋引擎單獨准备一份内容
返回與用戶所见明顯不同的内容,風險和收益不成比例。更合适的做法是让同一份内容在两種环境下都可讀。
顺带检查收錄入口
渲染問题解决後,URL 才知道自己该被谁發現:站内連結是否在原始 HTML 里出現、sitemap 里的地址是否與最终地址一致、canonical 是否指向同一個版本。這些都没問题,剩下的才是抓取和收錄节奏的事。
如果只有少量頁面出現空壳,先看模板;如果是整站,先解决渲染鏈路,再谈頁面质量與收錄策略。