做站点运营的人经常會遇到一個對不上的數字:網站里真正需要运营的頁面可能只有几百個,但索引里的 URL 却是這個數字的好几倍。這種「索引中的 URL 數量遠超實际有價值頁面數量」的情况,一般叫索引膨胀。它本身不是惩罚,但會带来几個很實际的麻烦。
索引膨胀會带来什么
- 抓取预算被摊薄:蜘蛛每次来訪能抓取的 URL 數量有限,如果大量低價值 URL 占着位置,重要頁面的更新和新建頁面就只能排在後面。
- 信号被稀释:同一批内容以多種參數變体存在时,外鏈和用戶行為資料會分散到不同 URL 上,很难集中到代表頁。
- 报表失真:索引报告里「已编入索引」的數字看着不少,但對不上實际流量,排查問题时容易被誤導方向。
常见的膨胀来源
參數组合生成出来的頁面
篩選、排序、分頁、會话、追踪參數,任意两三個叠加就能滚出成千上萬個 URL。绝大多數组合既没有獨立搜尋需求,也没有人從站外連結過来。
站内搜尋结果頁
搜尋關鍵詞的排列组合几乎是無限的,這類頁面内容單薄,又和主頁面高度重复,是膨胀的常见来源之一。
归档與聚合頁
按标簽、作者、日期、月份自動生成的归档列表,如果本身没有獨立價值,也很容易一個個進入索引。
技術性重复
带與不带 www、http 與 https、结尾有没有斜杠、路径大小寫、带不带 index 後缀,如果不做统一跳轉,可能各自成為一個可訪問地址。
先摸清規模,再决定動作
動手清理之前,先確認問题到底有多大:
- 用 site 查询(例如 site:example.com)大致看索引規模。注意這個數字並不精确,只适合做量級判断,不要当成准确值。
- 在站点後台的頁面索引报告里按「已编入索引」分组查看,重点找那些你根本不打算运营的路径。
- 把服務器日誌里被频繁抓取的 URL,和 sitemap 中主動提交的 URL 做對比,差集往往就是膨胀的来源。
收敛的處理顺序
第一步:先停止繼續生成
最常见的情况不是舊 URL 没清理,而是一邊清理一邊還在生成新的參數連結。比如模板里預設輸出带排序參數的連結、相關推荐里拼接了追踪參數。不先把出口堵住,清理速度很难追上生成速度。
第二步:按類型分別處理
- 完全没有價值、也不该被訪問的:考虑直接删掉或返回 404 / 410。
- 有獨立價值但结构重复的:用 canonical 指向代表頁,让搜尋引擎優先選擇那一條。
- 需要保留可訪問性、但不该進索引的:用 noindex,注意這里不要用 robots.txt 去挡。
- 已经积累外鏈的舊地址:用 301 跳到新地址,把已有信号带過去。
第三步:观察一段時間再迭代
索引的增删都需要時間,改動之後不要指望立刻见效。建议分批處理並记錄每一批做了什么,等下一轮再對照資料看哪一類處理有效、哪一類還需要換方法。
robots.txt 屏蔽和 noindex 不要同时用在同一批 URL 上。被 robots.txt 挡住的頁面,搜尋引擎抓不到頁面里的 noindex 指令,结果可能是這些 URL 長期停留在「已發現」狀態而不登出。
不必追求索引越少越好
收敛的目标是让索引里留下的 URL 和實际要运营的頁面大致對應,而不是把數字压到最低。有些看起来多余的地址,如果确實有站外連結、有稳定訪問,保留下来也是合理的選擇。判断标准始终是三條:這個 URL 有没有獨立價值、有没有人從站外来、有没有對應的搜尋需求。三條都说不清的,才轮到清理。