问题出现得很突然,日志倒是留得挺全。改版把 /feed 挪到了 /rss.xml,旧地址没有做跳转。订阅器每天照旧来拉,拿到的全是 404,抓取器也读不到最新文章。
刚开始盯着「站点地图里还引用着旧地址」,折腾了半个多小时,排掉了。
真正麻烦的地方在于,几个原因的现象几乎一样。旧 feed 地址直接 404,没有留 301。还有一种是页面头部里的 feed 声明没跟着更新。
少数情况下是订阅器把地址缓存死了,不会自己发现新位置。
第一件事是确认旧地址现在返回什么
curl -sI https://www.lu0.cn/feed | head -1
旧地址 301 到新 feed
location = /feed { return 301 https://www.lu0.cn/rss.xml; }
更新页面里的 feed 声明
curl -s https://www.lu0.cn/ | grep -o 'application/rss+xml[^>]*'
等前面都确认过,再让新 feed 保留完整历史条目
怎么算真的好了,看的是同一批现象。旧地址稳定 301,订阅器恢复正常拉取,新文章当天就能在 feed 里被看到。
容易忽略的是,feed 是抓取器判断更新的快捷通道,换地址时留一条永久跳转成本极低。这类问题最好一次改到位,反复小改反而容易把原因搅混。
