结论先行:日期方案是最佳选择
经过多种方案的对比与实践,推荐使用基于文章创建时间的日期格式作为永久链接,即:
permalink: :year:month:day:hour:minute:second.html
该方案完全依赖 Hexo 原生功能,无需额外插件;生成的 URL 简洁、无中文乱码、长度固定;只要在每篇文章的 Front-matter 中明确设置 date 字段,链接即可永久不变,彻底解决了文件名修改、中文转义等痛点,是兼顾 SEO 与稳定性的最优解。
下面详细分析各方案的优缺点,根据实际需求选择。
默认配置
Hexo 生成永久链接的常规设置位于站点根目录的 _config.yml 文件中,如下所示:
permalink: :year:month:day:hour:minute:second.html
permalink_defaults:
pretty_urls:
trailing_index: true # 设为 false 可移除 URL 末尾的 'index.html'
trailing_html: true # 设为 false 可移除 URL 末尾的 '.html'
然而,默认的 :year/:month/:day/:title/ 格式存在一个明显问题:当文章标题为中文时,生成的 URL 会包含中文,分享时会被转义为一串乱码,不仅影响用户体验,也不利于 SEO。
理想的 URL 应尽量简洁。百度建议 URL 长度不超过 255 字节(英文字符占 1 字节,中文字符占 2 字节)。下文将分析几种常见的优化方案及其优缺点。
使用 :title 生成 URL
将 permalink 设置为 :title.html,例如:
permalink: :title.html
若文章文件名为 hello-hexo.md,生成的链接为:
https://gloamfox.github.io/hello-hexo.html
优点:结构简单。
缺点:
- 文章文件名必须为英文,否则中文会被转义;
- 文件名一旦修改,URL 也会改变,导致链接失效;
- 文件名过长会使 URL 冗长,影响美观与 SEO。
使用 hexo-permalink-pinyin 插件
该插件可将中文标题自动转换为拼音,解决中文 URL 乱码问题。
安装:
npm hexo-permalink-pinyin --save
配置_config.yml
permalink_pinyin:
enable: true
separator: '-' # 分隔符,默认为 '-'
例如,文章《图片压缩与格式优化指南》生成的链接为:
https://gloamfox.github.io/tu-pian-ya-suo-yu-ge-shi-you-hua-zhi-nan/
优点:解决中文乱码。
缺点:文件名依然影响 URL 结构,修改文件名仍会导致链接变化。
使用 hexo-abbrlink 插件
该插件通过文章标题生成固定哈希值作为链接标识,文章修改后链接保持不变。
安装:
npm install hexo-abbrlink --save
配置_config.yml
permalink: :abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(默认)或 crc32
rep: dec # 格式:dec(十进制)或 hex(十六进制)
生成链接示例:
crc16 & hex:https://gloamfox.github.io/posts/55c6.htmlcrc32 & dec:https://gloamfox.github.io/posts/1521457752.html
优点:解决中文问题,链接短且稳定,修改文件名不影响 URL。
缺点:哈希值依赖标题,若标题相同可能产生“碰撞”(虽然插件有处理机制),且链接随机,不易记忆。
使用 hexo-abbrlink2 插件
这是 hexo-abbrlink 的升级版,采用自增 ID 机制,而非哈希算法。
安装
npm install hexo-abbrlink2 --save
配置
permalink: posts/:abbrlink.html
abbrlink:
start: 100 # 启起始文章id,默认为0 ,可以自定义,比如100
配置后生成的链接为:
https://gloamfox.github.io/1.html
https://gloamfox.github.io/2.html
https://gloamfox.github.io/3.html
优点:极短且唯一,不受标题内容影响。
缺点:
- ID 生成依赖文章生成顺序,部署顺序改变可能导致链接变化。
- 实际使用过程中发现生成的ID有重复,应该是插件的bug,不可使用
使用 :hash 生成 URL
Hexo 原生支持通过 :hash 生成基于文件名和 date 字段的哈希值链接。
配置:
permalink: :hash.html
生成链接示例:
https://gloamfox.github.io/3b48da9a3b8b.html
优点:简短,date 字段在创建时就确定,链接稳定。
缺点:若后续修改文件名,URL 也会变化,不够灵活。
使用 :year:month:day:hour:minute:second 生成 URL(推荐)
这是 Hexo 原生支持的方案,利用文章创建时间生成唯一链接。
配置:
permalink: :year:month:day:hour:minute:second.html
生成链接示例:
https://gloamfox.github.io/20210412131554.html
配合 pretty_urls 设置可进一步优化:
pretty_urls:
trailing_index: true
trailing_html: true # 若设为 false,则 URL 末尾不显示 .html
优点:
- 完全原生,无需插件;
- 链接基于文章的
date字段(创建时已确定),永不改变; - 结构清晰、长度固定、无乱码,SEO 友好;
- 不受文件名修改影响。
注意事项:
- 若去掉
.html(trailing_html: false),某些平台发外链时可能自动追加/导致 404,建议保留.html; date字段需在每篇文章的 Front-matter 中明确指定,避免使用文件创建时间作为替代,以确保跨环境一致性。
总结
对于绝大多数 Hexo 用户,采用日期生成永久链接是最稳妥、最简洁的终极方案。它不仅解决了中文乱码、文件名变动等核心痛点,还能保持 URL 的永久有效,是提升博客 SEO 与用户体验的最佳实践。