Skip to Main Content
404Back to Top

20 October 2026, 20:00 (GMT+8)

2026年10月20日 20:00(东八区 / 北京时间)

RSS/Atom 订阅只见部分文章、刷不出新文:根因定位与修复方案

概述

本轮排查「订阅后仅获取部分文章、且无法刷新获取后续新增文章」的问题。结论是:不是订阅器不刷新,也不是 feed 没更新,而是站点没有全站 RSS/Atom,只有分板块 feed;而订阅入口只暴露了 Nanolog 和「Blog(01Write_blog)」两个板块,后者基本是空的,新文章都发在别的板块里,所以订阅者永远刷不到。

  1. 无全站 feed:zola.toml 只写了 feed_filenames,缺 generate_feeds = true,Zola 因此不生成根目录 /atom.xml、/rss.xml(线上 404);
  2. 只有分板块 feed:各板块 _index.md 里 generate_feeds = true,各自生成独立 feed;自动发现只暴露 feed_sections 里声明的 Nanolog 与 Blog 两个板块;
  3. 「Blog」板块几乎没文章:01Write_blog 实际只有 2 篇 6 月的测试文,长文分散在 CXX20 / Share / Debug / Math 等十几个板块;
  4. 新文都发在别的板块:最近新增文章全部落在 01Write_blog_CXX20 与 03Share_blog,不在被订阅的板块里;
  5. 加密文章被过滤:scripts/post-build.mjs 会把 encrypt = true 的文章从 feed 与搜索索引中移除(当前约 8 篇)。

一、现象

二、根因定位

2.1 站点级 feed 从未生成(主因)

zola.toml 里只配置了:

feed_filenames = ["atom.xml", "rss.xml"]

但全文件没有 generate_feeds = true。Zola 只有开了 generate_feeds 才会生成根目录的 atom.xml / rss.xml。实测同版本 Zola(0.23.6):不开该开关时构建产物里没有根 feed,线上 https://suchaharcan.github.io/atom.xml 返回 404。

2.2 实际存在的只有「分板块」feed,自动发现只暴露 2 个板块

主题 partials/head.html 会按 zola.toml 的 feed_sections 输出订阅链接,目前只有:

名称板块feed 地址
Nanolog@/nanolog/_index.md/nanolog/atom.xml
Blog@/01Write_blog/_index.md/01Write_blog/atom.xml

于是从首页点订阅,只能选到这两个之一。而 generate_feeds = true 的板块其实有十几个,每个板块各自生成独立 feed。

2.3 被当作「Blog」的 01Write_blog 板块几乎没有文章

线上 /01Write_blog/atom.xml 实际只有 2 条,都是 6 月的测试文(One、Third)。真正的长文全部分散在:

板块文章数
03Share_blog15
00Read_blog_Math8
00Read_blog_English7
02Engineer_blog_Debug7
01Write_blog_CXX205
01Write_blog_CMake / 01Write_blog_AlgorithmDesign各 5
其余写作子板块各 1–2

2.4 新文章恰好都发在「没被订阅」的板块

最近一次提交 Create New Blogs And Update Old Blogs 的新增文章全部落在:

这些板块既不在自动发现列表里,也和用户订阅的 Nanolog / Blog 无关。所以即使部署成功、对应板块 feed 也更新了,订阅器刷新时依旧一个「新文章」都看不到。

2.5 加密文章被主动剔除

scripts/post-build.mjs 会把所有 encrypt = true 的文章从 feed 与搜索索引中过滤掉(约 8 篇),这是设计行为(正文加密,feed 不放明文),也让「部分文章缺失」更明显。

三、修复方案

方案 A(推荐,一步到位):生成全站 feed

在 zola.toml 顶层补一行:

generate_feeds = true
feed_filenames = ["atom.xml", "rss.xml"]

这样根目录会生成 /atom.xml 与 /rss.xml,收录全站所有带 date 的文章(跨板块,按日期倒序)。本地已用同版本 Zola 验证:开启后根 feed 同时包含不同板块的文章。订阅者只需订阅这一个地址即可收到全站更新。

方案 B:扩充自动发现的板块

把真正在更新的板块补进 feed_sections,例如:

feed_sections = [
  { name = "Nanolog", path = "@/nanolog/_index.md" },
  { name = "Blog", path = "@/01Write_blog/_index.md" },
  { name = "CXX20", path = "@/01Write_blog_CXX20/_index.md" },
  { name = "Share", path = "@/03Share_blog/_index.md" },
]

首页订阅入口会相应多出这些板块的 feed 链接,但订阅者仍需分别订阅每个关心的板块。

方案 C(订阅者侧临时办法)

直接订阅具体板块的 feed,例如:

四、注意

相关链接:首页 · Nanolog 列表 · Ametrine 主题

13 October 2026, 22:07 (GMT+8)