很多人把 sitemap 当成站点 URL 的全集,于是当搜尋里出現一批 sitemap 里没寫的地址时,第一反應是“被乱抓了”。實际上,sitemap 只是一份推荐清單,它表達的是“我希望被發現這些”,並不等于“搜尋引擎只會發現這些”。
先把三份清單摆在一起看
要判断多出来的 URL 從哪来,先做對照:sitemap 里的地址、服務器日誌里被請求過的地址、以及在搜尋端抽查到的地址样本。三者對不上的部分,才是排查對象。只看其中一份,很容易把结论下错。
多出来的 URL,常见有這几類来源
站内連結和自動生成頁面
标簽聚合頁、站内搜尋结果頁、日歷頁、按條件生成的列表頁,只要有連結能被爬到,就可能被發現。這類頁面往往數量大、内容薄,最容易让索引數量悄悄膨胀。
外鏈和早期被引用過的地址
別人挂過的舊連結、论坛里留下的參數地址、歷史活動的落地頁,即使站内已经不鏈了,只要有外部引用,蜘蛛仍然可能顺着走過来。
主机名與协议變体
http 與 https、带 www 與不带 www、CDN 域名、測試域名、带端口的地址,都算不同的 URL。如果這些變体没有统一收口,等于同一份内容在索引里有多個入口。
跳轉鏈上的歷史地址
做過 301 的舊地址、被改過路径的栏目頁,本身可能還會被訪問到。跳轉本身没問题,但如果鏈條太長或指向不稳定,收口就會變慢。
參數组合與分頁
排序、篩選、追踪參數每次组合都會生成新地址。這類地址是否要收錄,取决于它是不是用戶真會搜、内容是否稳定,而不是取决于它能被生成。
怎么判断该留還是该收口
- 這個地址打開後,是不是一個對用戶有獨立價值的頁面?
- 它和主版本是不是同一份内容?是,就應指向唯一規范地址。
- 它有没有站内入口、有没有外部引用?孤岛頁面通常不值得留在索引里。
- 它會不會持續被生成?會的话,要在生成层就限制,而不是事後清理。
處置手段大体分两類:一類是合並,用 301 或規范标簽把信号集中到一個地址;一類是排除,用 robots.txt 挡住抓取,或用 noindex 阻止索引。要注意邊界:robots.txt 管的是抓取,被挡住的頁面如果仍被外部連結指向,仍可能出現只带連結的條目;noindex 需要頁面能被抓到才能生效。
sitemap 與索引不一致是常態,不是故障。真正要盯的是多出来的那些地址,是不是在消耗抓取、稀释内容信号。
不是所有多出来的都要清掉
有些額外地址是有價值的:多語言版本、地区版本、有獨立搜尋需求的标簽頁。判断标准回到頁面本身——用戶搜它有没有意义,内容是否獨特。一刀切地全部屏蔽,可能连带把有用的入口也挡掉了。
建议把這份對照做成固定動作:一段時間抽一次日誌和索引样本,看新增的 URL 集中在哪個模板、哪個来源。按模板分组看,比盯着總量數字更容易定位問题。