问题出现得很突然,日志倒是留得挺全。为了不让用户看到 404,站点把不存在的地址统一 302 到站内搜索结果页。半年后这批地址在索引里涨到三万条,内容都是空结果加推荐词,整站的质量评分下降,正常页面的排名也受影响。

刚开始盯着「跳转目标带原始地址参数 每条死链都生成一条新地址」,折腾了半个多小时,排掉了。

真正麻烦的地方在于,几个原因的现象几乎一样。不存在的地址返回 302 而不是 404 蜘蛛把跳转目标当成新页面。还有一种是搜索结果页本身可索引 大量空结果页被收进索引。

少数情况下是站内搜索页没有 noindex 也没有 robots 限制。

先确认死链当前的状态码

curl -sI https://www.example.com/no-such-page | head -1

恢复 404 并给出可用的导航

location / { try_files $uri $uri/ =404; }

给搜索结果页加 noindex

<meta name="robots" content="noindex, follow">

提交已收录的搜索结果页做移除

curl -s 'https://www.example.com/api/remove?prefix=/search'

改完先别撤,确认这几项。改回 404 并给搜索页加标签后,三周内索引里这批地址降到千条以内,正常页面的排名逐步恢复。

把死链统一跳到搜索页只是把问题藏起来,302 到可索引页面会让死链变成新的低质页面,比 404 更糟。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189