如何让Jekyll自动为文章图片和链接添加baseurl?
在Jekyll中自动给Markdown图片/链接添加baseurl的方法
不需要手动修改数百篇文章里的链接,用以下程序化方法解决:
方法一:用Jekyll钩子(Hooks)自动替换路径
在站点根目录的_plugins文件夹下新建baseurl_prefixer.rb文件,写入以下代码:
Jekyll::Hooks.register :pages, :pre_render do |page, payload| # 跳过布局和包含文件,避免重复处理 next if page.path.start_with?('_layouts') || page.path.start_with?('_includes') # 替换带绝对路径的图片(支持带标题的格式) page.content = page.content.gsub(/!\[(.*?)\]\((\/[^)]*)\)/) do "" end # 替换带绝对路径的链接(支持带标题的格式) page.content = page.content.gsub(/\[(.*?)\]\((\/[^)]*)\)/) do "[#{$1}](#{payload['site']['baseurl']}#{$2})" end end
说明
- 脚本会在页面渲染前触发,自动匹配所有以
/开头的图片和链接URL,将site.baseurl拼接在路径前 - 确保
_config.yml中baseurl设置为"/portfolio"(建议带开头斜杠,避免路径拼接出错) - 不会影响相对路径(如
../assets/image.jpg)和外部链接(如https://example.com/image.jpg) - 兼容带标题的链接/图片格式,比如
[文本](/path "标题")或
方法二:调整kramdown渲染配置(可选)
如果使用kramdown作为Markdown渲染器,可在_config.yml中添加以下配置,但需要配合额外的Liquid过滤器处理内容,优先级低于钩子方法:
kramdown: auto_id_stripping: true
内容的提问来源于stack exchange,提问作者Mike Szczys
相关产品推荐
相关产品推荐

