站内搜尋是用戶找内容的快捷方式,但它同时也是搜尋引擎最容易批量發現 URL 的地方之一。用戶每搜一個词,就可能产生一個新地址。如果不做约束,站点會在不知不觉中把成千上萬個搜尋頁交到搜尋引擎手里。
為什么站内搜尋结果頁容易出問题
- URL 由參數拼接生成,關鍵詞、頁碼、排序方式组合起来几乎無限。
- 頁面正文多是标题和摘要的机械拼接,與分類列表頁高度重复。
- 無结果时也常常返回 200,並挂着一句“没有找到相關内容”。
- 结果里可能混入未發布内容、已下线頁面或不希望公開的條目。
- 大量低價值地址被反复抓取,真正需要更新的内容反而排不上队。
自查清單
1. 先確認搜尋入口的 URL 形式
在站内搜几個不同長度的词,观察地址栏。常见的形態有 ?s=、?q=、?keyword=,也有 /search/ 這類路径式寫法,部分站点還會同时存在两種。把實际出現的變体都列出来,後面的規則才有依據。
2. 在 robots.txt 和 noindex 之間選一條
两種思路都可行,但不要同时用又指望某一方生效。用 robots.txt 屏蔽搜尋路径,省抓取,但搜尋引擎讀不到頁面上的标簽;用頁面級 noindex,搜尋引擎需要先抓下来才能看到,可控但更消耗一点抓取。站点規模不大时,直接屏蔽通常更干净。
robots.txt 是“別来抓”,noindex 是“抓了也別收錄”。選一個执行,並在模板层面统一,別让某些頁面屏蔽、某些頁面加标簽。
3. 检查空结果頁與错誤處理
無结果时不要只返回 200 加一句提示。可以返回 404 或 410,至少也要在頁面上加 noindex,同时给出推荐内容和返回上一层的入口,避免用戶卡在一個空頁面上。
4. 別让搜尋頁進 Sitemap 和内鏈
站点地图、主導航、頁脚、文章末尾的“相關搜尋”“热门搜尋”,都不應该指向搜尋结果頁。结果列表内部的連結保持正常跟随即可,但搜尋頁自身不要成為被推荐、被反复引用的入口。
5. 用抓取日誌核對效果
在留存好的抓取日誌里篩選含搜尋路径的請求,看频率和返回狀態碼。如果蜘蛛仍在大量請求,先检查是不是其他頁面還在鏈過去,或者規則寫错、被 CDN 缓存覆盖,而不是急着再加一條規則。
顺带處理两個细节
- 搜尋頁的标题不要只用“搜尋结果 - 站名”。如果這類頁面必须存在,至少让标题带上關鍵詞,並與 noindex 一起處理。
- 搜尋结果的分頁同样由參數生成,翻頁會翻出更多地址。能限制頁數就限制,能统一到第一頁就统一。
什么情况下不必屏蔽
如果篩選组合本身构成了有獨立價值的内容——比如商品按類目、材质、用途交叉後形成的落地頁——那属于另一套規划:需要稳定的静態路径、獨立的标题與描述、足够的真實内容。普通站内搜尋不属于這一類,別用同一套參數硬撑。
把搜尋頁管住,省下的不只是抓取。更重要的是,用戶從搜尋引擎点進来时,最好直接落在具体内容上,而不是落在一個還要再搜一次的輸入框前。