站内搜尋几乎是内容型站点的标配,用戶輸入關鍵詞就能直達目标頁面,体驗确實好。但對搜尋引擎蜘蛛来说,搜尋頁往往是全站數量最庞大、内容最單薄、地址最杂乱的一批頁面。如果完全放任,蜘蛛很容易把抓取額度大把花在這些组合頁上,真正需要被發現的文章反倒排到了队尾。
搜尋頁為什么會變成抓取陷阱
根本原因是這類頁面的地址由參數驱動,而參數可以组合出近乎無限的變体。常见的情况包括:
- 關鍵詞與關鍵詞相互叠加,形成成千上萬個结果頁;
- 排序、篩選、每頁條數等參數與分頁參數同时出現在一個地址里;
- 空结果頁仍然返回 200 狀態碼,蜘蛛會認為這是一個有效頁面;
- 带時間條件的篩選會随時間不断生成新的地址;
這几種情况叠加之後,站点看起来像是在持續产出新頁面,實际上产出的基本都是重复、低價值的聚合结果。
逐項核對的自查清單
- 搜尋頁是否設定了 noindex。如果希望頁面能被用戶訪問、但不進索引,noindex 是最直接的做法,前提是頁面本身不要被 robots.txt 屏蔽。
- robots.txt 是否屏蔽了搜尋路径。屏蔽可以阻止抓取,但也意味着蜘蛛讀不到頁面里的 noindex 标记,两者不能同时生效,需要二選一。
- 站内連結是否把搜尋頁当導航入口。比如全站铺開的“热门搜尋”“相關搜尋”,會把大量參數地址暴露给蜘蛛,可以考虑改為纯前端跳轉或加上 nofollow。
- 空结果頁如何處理。没有匹配结果时,返回 404 或至少加 noindex,都比返回一個正常的空白列表頁更好。
- 排序與视图參數是否统一。同一批内容的不同排序方式,通常没有必要各自留一個可索引地址。
- 分頁參數是否被規范化。检查是否出現 page=1 與無參數版本並存、或者分頁地址互相冲突的情况。
屏蔽還是 noindex:別同时用
這是實际操作中最容易出错的一点。robots.txt 屏蔽的作用是“不许抓取”,noindex 的作用是“可以抓取但不要索引”。如果某條路径被 robots.txt 屏蔽,蜘蛛根本看不到頁面里的 noindex,于是頁面可能因為外部連結等原因依然停留在索引里,形成“明明屏蔽了却還在”的尴尬局面。稳妥的做法是:需要保留頁面给用戶看,就用 noindex 並允许抓取;如果這類地址完全不需要被抓取,再考虑用 robots.txt 屏蔽。
判断标准很简單:你希望這個地址出現在结果里吗?不希望被索引,就用 noindex;不希望被訪問,才用 robots.txt。
別只盯着搜尋框
产生參數地址的地方遠不止搜尋功能,以下来源同样值得检查:
- 投放或分享連結带上的跟踪參數,例如 utm 系列;
- 會话 ID、来源标记等由程序自動追加的參數;
- 篩選與排序组合出的地址;
- 打印版、纯文本版等备用视图;
- 地区或語言切換參數。
這些地址通常内容相同,只是入口不同。處理思路是一致的:要么在服務端做規范化,要么用 canonical 指向主地址,要么直接阻止抓取。
如何驗證處理效果
改動之後不要只看感觉,建议從三個地方回看資料:抓取日誌里搜尋頁與參數地址的占比是否下降;索引狀態报告里這類地址的數量是否逐步收敛;站内連結中是否還有指向參數地址的入口。可以每隔一段時間抽样几條地址,手動打開確認返回的狀態碼和标记是否符合预期。
站内搜尋本身不是問题,問题是把它当成内容頁来對待。把它当成工具頁来看待,限制它的可抓取范围,蜘蛛的訪問額度才能更多流向真正需要被發現的内容。