如何在Franklin.jl中修改相对路径以适配GitHub Pages部署?
Franklin.jl部署GitHub Pages子路径资源加载问题解决方案
问题本质
该问题不是GitHub Pages配置错误,属于静态站点部署在域名子路径下的通用适配问题:你的站点实际部署在user.github.io/website/子目录下,但Franklin.jl默认生成的资源链接为指向站点根目录的绝对路径,导致路径寻址不匹配。
修复操作步骤
- 第一步:修改Franklin项目配置
打开项目根目录下的config.md文件,添加如下配置项:
@def prepath = "website"
其中website为你的GitHub仓库名称,即站点子路径的对应目录名。
如果需要生成不带开头斜杠的相对路径(和你手动修改的效果完全一致),可以额外添加配置:
@def absolute_links = false
- 第二步:重新构建静态文件
配置修改完成后,在Franklin运行环境中执行build()命令重新生成站点文件,此时所有自动生成的资源链接、内部跳转链接都会自动适配子路径规则:- 默认开启
absolute_links时,样式表链接会自动生成为/website/css/styles.css,完全匹配GitHub Pages的路径规则 - 关闭
absolute_links时,样式表链接会自动生成为css/styles.css,无需手动修改任何HTML文件
- 默认开启
- 第三步:重新部署到GitHub Pages
将新生成的静态文件推送到gh-pages分支,刷新站点即可正常加载CSS样式和其他资源。
补充说明
所有需要部署在域名非根目录下的静态站点,都需要在静态生成阶段配置对应的子路径前缀,这是静态站点生成框架的通用配置要求,并非Franklin.jl独有的设置项。
内容的提问来源于stack exchange,提问作者Eduardo Uriegas
相关产品推荐
相关产品推荐

