diff --git a/website/README.md b/website/README.md index d327da3b..31e07b74 100644 --- a/website/README.md +++ b/website/README.md @@ -45,6 +45,8 @@ verify_updates.py 在临时副本中修改文章、替换配图、新增文章 学习站(定级、每日计划、间隔复习)的代码不在本仓库,网站工作流从私有仓库检出到 learn/;learn/ 存在时,build.py 调用 learn/build.py 生成到 dist/learn/,随网站一起发布,并在首页、侧边栏和三条学习路线的文章开头加入口,学习站中有题的笔记在文章末尾提示“读完练一练”(search-paths.js 中的 CS_NOTES_LEARN_TOPICS 记录每篇笔记的题号);已经在学的读者,入口和首页横幅读取同一网站下的学习记录(localStorage 的 cs-learn-v1,不上传),写出练过几道、今天有几道到期;有题的小节标题下列出这一节的面试题(CS_NOTES_LEARN_SECTIONS:笔记 → 锚点 → 题号、题目、热度),点进去只练这一节;不存在时只构建笔记,没有入口。 +构建时在根目录写入 robots.txt,指向学习站的站点地图(learn/sitemap.xml,列出每道题的静态页面)。 + ## 自动更新与发布 `.github/workflows/website.yml` 在 master 提交后、北京时间每天 09:17 和 21:17,以及手动 Run workflow 时运行。PR 仅验证合并后的源码,不读取部署凭据。CI 使用 `refresh.py --from-checkout` 从已检出的 Git 提交生成,源码中未提交的本机文件不会进入产物。 diff --git a/website/builder/build.py b/website/builder/build.py index dca55fb0..e1c77d4b 100644 --- a/website/builder/build.py +++ b/website/builder/build.py @@ -230,6 +230,8 @@ def build(optimize=True): (dist / '_sidebar.md').write_text('\n'.join(sidebar) + '\n') (dist / '_404.md').write_text('# 页面暂未找到\n\n请从目录或搜索查找笔记。\n\n[返回首页](/)\n') (dist / '.nojekyll').touch() + # 允许收录;学习站每道题的页面列在它的站点地图中(笔记页面在 # 之后,没有单独的地址) + (dist / 'robots.txt').write_text('User-agent: *\nAllow: /\n' + (f'Sitemap: {SITE_URL}learn/sitemap.xml\n' if LEARN_BUILD.is_file() else '')) shutil.copyfile(ROOT / 'docs/_media/LogoMakr_1J56bI.png', dist / 'favicon.png') learn_report = None if LEARN_BUILD.is_file():