这类问题我又碰上了一次。站内搜索做了兜底,搜不到时返回 200 并推荐 20 篇热门文章,页面上写「没有找到相关结果」。百度三个月收录了 4000 多条这种页面,全部没有排名,抓取统计里这些地址的响应时间还偏高。

第一反应是「标题仍拼搜索词,索引里出现大量无意义长尾」,验证下来不成立。

真正麻烦的地方在于,几个原因的现象几乎一样。页面主体是推荐列表,与搜索词毫无关系,被判内容不相关;状态码给 200,蜘蛛按正常页面处理并持续抓取;推荐列表每次随机,同一地址两次抓取内容不同。

第一件事是确认无结果时的状态码和正文长度

curl -s -o /dev/null -w '%{http_code} %{size_download}\n' 'https://www.example.com/search?q=zzzz'

无结果改成 404 并撤掉推荐位

location = /search { if ($arg_q = "") { return 404; } }

有结果的搜索页也补 noindex

curl -s 'https://www.example.com/search?q=nginx' | grep -i noindex

提交移除已经收录的无结果页

site:www.example.com/search

改完先别撤,确认这几项。无结果地址返回 404,收录量两周内从 4000 掉到百位以内,抓取预算回到文章页。

兜底推荐改善的是体验,不该用 200 把它变成可索引内容,状态码和内容要一致。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189