公开GitHub Pages仓库中Jekyll设published:false能否藏文?如何私有化部分博文?
Jekyll部分博客私有访问解决方案
你遇到的问题核心是:published: false配置仅会让Jekyll构建时不输出对应文章的静态页面到站点目录,但文章源文件仍存放在公开仓库的/_posts目录下,因此任何人都可以直接通过仓库访问到未发布的文章内容。
以下是可落地的3种解决方案:
方案1:拆分公私仓库(零配置、安全性最高)
- 新建一个私有Git仓库,专门用来存储未发布的草稿、需要保密的私有文章源文件,所有未正式对外公开的内容仅存放在这个私有仓库中
- 原有的公开GitHub Pages仓库仅存放你确认要公开发布的文章,写完需要公开的内容后,手动从私有仓库同步对应文件到公开仓库的
/_posts目录即可 - 该方案完全不需要修改Jekyll配置,也不存在加密破解风险,私有内容从始至终不会出现在公开环境中
方案2:私有内容前端加密(无需调整仓库权限)
- 对需要私有访问的文章,使用AES等对称加密算法对文章全文内容加密,仅将加密后的密文上传到公开仓库的
/_posts目录 - 给对应文章的页面模板添加前端JS解密逻辑,用户访问该页面时需要输入预设的密码,密码验证通过后才会解密出明文内容展示
- 该方案无需额外仓库、不用调整GitHub权限,即使其他人拿到源文件也只能看到加密后的密文,没有密码无法读取原文
- 注意不要使用需要服务端支持的Jekyll加密插件,GitHub Pages默认的构建环境仅支持白名单内的官方插件,自定义插件无法正常运行
方案3:调整仓库权限(适合需要全站/多用户权限控制的场景)
- 首先纠正一个认知误区:GitHub Pages仓库并非必须设为公开。你可以直接将现有仓库改为私有,如果你使用GitHub免费版,私有仓库的Pages站点仅仓库协作者可访问;升级GitHub Pro后还可以更灵活地自定义Pages的访问范围
- 仓库改为私有后,外部用户无法查看仓库内的任何源文件,你可以直接用
published: false控制不需要对外构建的内容,也可以按需给指定用户开通仓库协作者权限,开放私有内容的访问权限
内容的提问来源于stack exchange,提问作者sonictl
相关产品推荐
相关产品推荐

