先看现象。搜索词拼错或商品下架时,站内搜索返回一个「没有找到相关内容」的模板页,状态码是 200,正文只有一句话,百度一周内收了 800 多条这种空页。
这类报错背后常见的原因有几处,逐个排除就行。无结果分支沿用了正常模板,没有单独返回 404。还有一种是空结果页标题和描述与正常页一致,被判成重复。
还有一种情况,推荐位里塞了十几个热门链接,页面看着不算空。
上来先让无结果分支返回 404
if (empty($rows)) { status_header(404); }
随后确认返回码与正文
curl -s -o /dev/null -w '%{http_code}\n' 'https://www.example.com/search?q=zzzz'
无结果页不再输出推荐链接
curl -s 'https://www.example.com/search?q=zzzz' | grep -c 'hot-link'
末了清理已收录的空结果页
site:www.example.com/search
那几天正好在做别的变更,先把时间线对齐才敢动手。
改完先别撤,确认这几项。改完后新产生的无结果页全部返回 404,两周内这批地址在索引里消失,搜索页抓取量下降六成。
无结果页返回 404 对用户没有影响,但要在页面上保留搜索框,别让访客走进死胡同。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
