抓取和索引不是一回事
做站的人经常會碰到這種情况:訪問日誌里明明有蜘蛛的记錄,狀態碼是 200,返回大小也看着正常,可過了很久,搜尋里還是找不到這個頁面。問题往往出在把“抓取”和“索引”当成了一件事。抓取只是蜘蛛把頁面内容取回去,之後還要经過解析、去重、质量判断、入库這一串步骤,任何一步没過,日誌里照样留着抓取痕迹,索引里却没有它。
日誌顯示抓到了,却進不了索引的常见原因
- 返回的 HTML 里没有正文。服務器先吐一個空壳,正文靠前端脚本再請求一次。蜘蛛如果没等到那一步,拿到的就是一個只有導航和頁脚的頁面,内容等于零。
- 内容與站内其他頁面高度重复。篩選頁、打印頁、带跟踪參數的地址,輸出的正文几乎一样。這類頁面即使被抓到,也容易在去重环节被合並掉。
- canonical 指向了別的 URL。模板里寫死的 canonical 没跟着改,蜘蛛抓的是 A 頁,讀到的信号却是“以 B 為准”,A 自然不會被單獨收錄。
- 被 noindex 或 X-Robots-Tag 拦住。meta 标簽改過一次忘了删,或者 CDN、中間件在响應头里补了一條規則,站点侧完全看不出来。
- 站内没有任何連結指向它。頁面只出現在 sitemap 里,導航、列表、正文中都没有入口,蜘蛛即使抓到一次,後續也很难再回来。
- 頁面内容本身太薄。几句话加上一堆推荐位和广告位,很难支撑一個獨立頁面。
先分清是抓取問题,還是索引問题
- 翻訪問日誌,確認蜘蛛到底来没来、来過几次、返回的狀態碼和字节數是多少。如果压根没有记錄,那是抓取問题,方向在連結入口、robots 和服務器响應上。
- 按蜘蛛的 User-Agent 取一次頁面,看拿到的 HTML 里有没有正文。這一步能排掉大部分“看起来正常”的假象。
- 核對 robots.txt、meta robots、X-Robots-Tag、canonical 四處信号是否一致,有没有互相打架。只需其中一處放行或拦截,结果就可能反轉。
- 對比返回字节數。列表頁和詳情頁如果字节數几乎一样,多半是模板輸出有問题,而不是内容本身不够。
這几步做完,通常能把問题归到“没被抓”還是“抓了但没被采用”這两類里的一類,後面的處理方向完全不同:前者要修入口和响應,後者要修内容與信号。
让抓取结果更接近索引的预期
- 首屏 HTML 里就带上正文的核心信息,不要等脚本执行完才出現。
- 同一份内容只保留一個規范地址,其余變体用 canonical 或參數規則收敛。
- 重要頁面在導航、列表或正文里至少有两條站内路径能走到,別只靠 sitemap。
- 改版或模板調整时,服務端輸出、canonical、robots 一起检查,避免只改了一半。
抓取是索引的前置條件,但不是收錄的保證。日誌里蜘蛛来得勤,只說明入口通畅;内容能不能進索引,還要看它取回去的是什么。
把這两件事分開看,排查时就不容易在错誤的方向上耗時間:先去日誌確認抓取是否發生,再核對頁面返回的内容和各類信号,最後才谈得上收錄與排名。