先把当时的情况摆出来。站内搜索改成 /search?q= 之后,无结果的空页面也返回 200 和完整模板,site 查询能翻到九千多条,标题全是同一个词,用户点进来一片空白。

把日志和配置对完,能解释这个现象的基本就这几处。空结果页返回 200 而不是 404 或 noindex。另一种情况是搜索页没有任何屏蔽声明,外链一指向就被收。

不容易想到的是,侧栏热门词链接把搜索地址铺到了全站。

第一件事是看空结果页的真实状态码

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

然后在搜索模板里补 noindex

grep -rn 'search.php' themes/ --include=*.php | head

等前面都确认过,再确认响应头里带上了屏蔽标记

curl -sI 'https://www.example.com/search?q=test' | grep -i x-robots

那几天正好在做别的变更,先把时间线对齐才敢动手。

恢复的判定其实很直接。改完两周后搜索页收录从九千降到不足百条,抓取日志里 ?q= 的请求同步减少。

提醒一点。搜索页最省事的处理是 noindex 加无结果返回 404,只靠 robots 屏蔽不会把已有条目清出去。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189