站点运营

站点运营:搜索蜘蛛的URL发现,从站内检索功能的降噪设计切入

站内检索功能在帮助用户找信息的同时,也容易产生大量低质量URL。本文从搜索结果页的索引控制、参数归一、结果分页与空结果处理等角度,讨论如何避免无效链接干扰搜索蜘蛛,让URL发现路径更干净。

站点运营

站点运营:搜索蜘蛛的URL发现,从站内检索功能的降噪设计切入

站内检索是很多网站的标准配置。用户输入关键词,系统返回一系列结果页。从功能上看,它方便了访客;但从搜索蜘蛛的URL发现角度看,它可能是一把双刃剑。检索结果页往往带有query参数、排序参数、筛选参数,这些URL数量不确定,且内容高度动态。如果不对其进行约束,蜘蛛可能把大量抓取预算消耗在内容价值有限的结果页上,反而拖累了核心页面的发现与收录。

检索结果页的URL特征

常见的站内检索URL形如/search?keyword=xx&page=2&sort=time。这类地址有几个共同点:第一,参数直接暴露在URL中,组合方式多变;第二,结果页内容随数据库变化,不同时间访问可能不同;第三,许多结果页之间内容相似度极高,只是排序或分页不同。对搜索蜘蛛而言,这些URL意味着不确定性和重复性。如果站点本身规模不大,蜘蛛还能勉强应对;一旦页面总量上升,检索结果页就可能挤占大量抓取配额。

用robots协议划定边界

控制检索结果页的URL发现,最直接的方式是robots.txt。可以屏蔽所有带检索参数的路径,比如Disallow: /search?,也可以更精细地只允许首页,禁止分页和筛选参数。这里需要注意,robots协议只是阻断抓取,并不移除已收录的URL。如果搜索结果页已经被索引,还需要结合noindex标签来清理。不过noindex页面依然会被蜘蛛发现,只是不参与索引,因此它更适合处理那些必须被访问但不想被收录的页面。

让检索URL保持稳定

如果网站希望搜索引擎收录部分高质量的检索结果页,比如某些聚合了核心内容的搜索页,那就需要让URL保持稳定。参数顺序固定、默认值不重复出现、无效参数及时过滤,都是基本要求。例如,/search?keyword=seo与/search?keyword=seo&page=1在蜘蛛看来是两个不同URL,但内容几乎一样。这种重复应该通过参数归一化来避免:没有实际意义的参数不要拼接到URL中,也不要用多个参数名表达同一个含义。

结果分页的降噪处理

分页是检索结果页的主要噪声来源。一个关键词可能翻出几十页结果,每一页都是一个新URL。实际上,绝大多数用户只点击前三页。蜘蛛如果无限抓取这些分页,既浪费资源,又得不到多少有效内容。常见的做法是:在检索结果页中使用rel=canonical指向第一页,或者在robots中禁止抓取page参数大于某个值的页面。同时,结果页的翻页链接应尽量采用更易理解的路径式分页,而不是无限生成带query的分页URL。

空结果页与近似结果页

当用户输入的关键词没有匹配内容时,网站通常会显示“没有找到相关内容”。这种页面如果被蜘蛛抓到,会得到一个极其单薄的响应。应对方式是给空结果页设置noindex,同时在robots中拦截明显无结果的参数组合。另外,有些网站会输出“您是不是要找:某某”,生成近似关键词的推荐链接。这些推荐链接一旦被蜘蛛抓取,又会形成一批新URL。建议对这类动态推荐链接做统一跳转或加rel=nofollow,避免蜘蛛顺着推荐链接无限扩散。

日志验证与持续调整

以上手段只能算静态规则,真实效果需要从蜘蛛日志中观察。定期检查日志,看/search路径的抓取次数、抓取状态码、入口页面是什么。如果发现某些检索URL反复被抓但返回200且无实质内容,就要考虑调整robots规则或增加canonical。如果发现蜘蛛沿检索结果的翻页链接不断深入,就要检查分页链接是否被严格控制。站点运营是持续过程,URL发现不是一次配置就能一劳永逸。

站内检索功能的降噪设计,本质上是给蜘蛛减负。减少无意义URL的冒头机会,才能让真正有价值的内容被更快发现。

平衡用户与蜘蛛的需求

注意,屏蔽检索页不能牺牲用户体验。用户仍然需要检索功能,蜘蛛也不一定完全排斥检索页。关键在于区分“结果页”和“检索入口”。检索入口页面本身是重要的,应当允许蜘蛛抓取。而具体的结果页,如果不是特别有聚合价值,就应当尽量限制其被蜘蛛发现。很多成功的站点,其检索页只开放有限的部分给搜索引擎,其余的交给robots管理。

从URL发现的角度看,站内检索其实是一个动态页面生成器,它不断制造新链接。站点运营者的责任是给这个生成器装上阀门,设定好哪类检索词可以产生可被蜘蛛发现的URL,哪类检索词产生的URL只能为真实用户服务。这样,蜘蛛池或普通站点才能保持URL的整洁,让抓取预算花在刀刃上。