You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll文章标题的合法文件名规则及特殊字符处理咨询

Jekyll文章标题/文件名的字符限制及处理方案

一、需要避免的字符(及原因)

Jekyll的文章文件名会默认用来生成页面URL(除非手动指定permalink),同时还要兼容操作系统的文件名规则,以下字符必须避免:

  • URL保留/特殊字符:#、?、&、%、/、\、:、*、<、>、|、"
    • 比如#会被浏览器识别为锚点,导致URL路径被截断;?会触发URL参数解析,Jekyll生成的页面路径会被错误识别,最终出现404。
  • 跨平台文件名冲突字符:Windows系统禁止的:、*、?、<、>、|、"、\,即使Linux/macOS允许,也建议统一避免,保证脚本在不同环境下都能正常工作。

二、Jekyll对非法字符的默认处理

Jekyll本身不会主动过滤或转义这些非法字符,它仍会发布包含这些字符的文件,但生成的URL会直接包含这些字符,导致浏览器无法正确解析,用户访问时会出现路径错误或404页面。

三、合法文件名但非法URL字符的处理方法

在文章的front matter中添加permalink字段,直接定义合法的URL路径,和文件名无关:

---
title: "#我的文章标题"
permalink: /2022/10/09/my-post/
---

这样即使文件名包含非法字符,生成的URL也是完全合法的。

2. 脚本自动处理文件名

在你的发布脚本中,提前对原标题做字符替换:

  • 将#、?等非法字符替换为-或直接移除;
  • 保留原标题到文章的front matter的title字段中,确保页面显示的标题正确。

比如原标题是#Post?标题,脚本生成的文件名为2022-10-09-my-post-title.md,同时在front matter里写title: "#Post?标题"。

3. 使用Jekyll的slugify过滤器

在模板或permalink配置中,利用Jekyll内置的slugify过滤器自动生成合法的URL路径:

  • 配置全局permalink规则(在_config.yml中):
permalink: /:year/:month/:day/:title:output_ext

然后模板里生成链接时用:

<a href="{{ post.url | slugify }}">{{ post.title }}</a>

slugify会自动将特殊字符移除、空格转成-,生成符合URL规范的路径。

内容的提问来源于stack exchange,提问作者Start-Automating

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:25:21