很多站点把站内搜尋当成一個纯前端功能,做完搜尋框就不再管它。但從URL發現的角度看,搜尋结果頁是一台不断生产新地址的机器:用戶搜什么词,就组合出什么地址,這些地址一旦被連結、被分享、被蜘蛛顺着抓取,就可能進入抓取队列。运营需要先弄清楚它會产生什么,再决定怎么處理。
站内搜尋頁會生成哪些URL
不同程序實現不同,常见的形態大致有這几類:
- 带查询參數的地址,例如以 q、s、keyword、search 為參數名,後面接用戶輸入的内容;
- 搜尋结果的翻頁地址,在參數之後再叠加 page 或 p;
- 带篩選與排序的地址,例如價格区間、時間范围、排序方式;
- 空结果頁,以及不带參數直接訪問的搜尋首頁;
- 程序把热门词做成的搜尋聚合頁或标簽頁。
前两類是無限组合,後两類是有限集合,處理思路完全不同:無限组合要收敛,有限集合反而可以考虑纳入正常结构。
三種常见處理方式,各有代價
直接放開
優点是蜘蛛能抓到内容,用戶分享的連結也能正常打開。代價是參數组合被大量抓取,占用服務器與抓取配額,而且搜尋结果頁内容重复、质量不稳定,通常不适合作為落地頁。
在 robots.txt 里 Disallow
這能立刻减少抓取量,是很多站点的第一反應。但有一個容易被忽略的副作用:被禁止抓取的地址,蜘蛛看不到頁面里的 noindex,也無法確認该頁不该收錄。如果這些地址此前已经被收錄,可能會較長時間留在索引里,展示的還是舊快照。
允许抓取但加 noindex
相對稳妥的做法是让蜘蛛進来看到 noindex 标簽或對應的响應头,逐步把已有收錄清出去,同时用參數規范和頁面上的内鏈策略控制爬虫深度。代價是短期内抓取量會上升,需要结合日誌確認没有異常膨胀。
把搜尋需求引導回结构化入口
站内搜尋反映的是用戶的真實需求。與其让這些需求散落在參數地址里,不如把它們沉淀成正式栏目:把搜尋量稳定的關鍵詞做成专题頁、分類頁或聚合列表頁,用常規内鏈指向這些頁面。這样既满足了用戶,也把可抓取、可收錄的地址收敛到了有限集合里。
判断标准很简單:如果某個搜尋词值得用戶反复搜,它就值得有一個固定URL。
日常要盯的几個点
- 日誌里搜尋頁的抓取占比,如果長期偏高,說明入口太多或參數没有收敛;
- 搜尋结果頁是否被搜尋引擎收錄,抽查几個典型參數组合;
- 热门搜尋词是否已有對應的静態栏目頁可以承接;
- 搜尋结果的翻頁參數是否與内容頁翻頁混用,避免蜘蛛在搜尋頁之間绕圈。
站内搜尋本身没有错,它是用戶体驗的一部分。問题在于运营者是否清楚它會生产多少URL、這些URL最终去了哪里。把這一层想明白,URL發現這件事就少了一個容易被忽视的漏洞。