问题出现得很突然,日志倒是留得挺全。为了不让用户看到 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 更糟。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
