结论先行:日期方案是最佳选择

经过多种方案的对比与实践,推荐使用基于文章创建时间的日期格式作为永久链接,即:

1
permalink: :year:month:day:hour:minute:second.html

该方案完全依赖 Hexo 原生功能,无需额外插件;生成的 URL 简洁、无中文乱码、长度固定;只要在每篇文章的 Front-matter 中明确设置 date 字段,链接即可永久不变,彻底解决了文件名修改、中文转义等痛点,是兼顾 SEO 与稳定性的最优解。

下面详细分析各方案的优缺点,根据实际需求选择。

默认配置

Hexo 生成永久链接的常规设置位于站点根目录的 _config.yml 文件中,如下所示:

1
2
3
4
5
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,例如:

1
permalink: :title.html

若文章文件名为 hello-hexo.md,生成的链接为:

1
https://gloamfox.github.io/hello-hexo.html

优点:结构简单。

缺点

  • 文章文件名必须为英文,否则中文会被转义;
  • 文件名一旦修改,URL 也会改变,导致链接失效;
  • 文件名过长会使 URL 冗长,影响美观与 SEO。

该插件可将中文标题自动转换为拼音,解决中文 URL 乱码问题。

安装:

1
npm hexo-permalink-pinyin --save

配置_config.yml

1
2
3
permalink_pinyin:
enable: true
separator: '-' # 分隔符,默认为 '-'

例如,文章《图片压缩与格式优化指南》生成的链接为:

1
https://gloamfox.github.io/tu-pian-ya-suo-yu-ge-shi-you-hua-zhi-nan/

优点:解决中文乱码。
缺点:文件名依然影响 URL 结构,修改文件名仍会导致链接变化。

该插件通过文章标题生成固定哈希值作为链接标识,文章修改后链接保持不变。

安装:

1
npm install hexo-abbrlink --save

配置_config.yml

1
2
3
4
permalink: :abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(默认)或 crc32
rep: dec # 格式:dec(十进制)或 hex(十六进制)

生成链接示例:

  • crc16 & hexhttps://gloamfox.github.io/posts/55c6.html
  • crc32 & dechttps://gloamfox.github.io/posts/1521457752.html

优点:解决中文问题,链接短且稳定,修改文件名不影响 URL。
缺点:哈希值依赖标题,若标题相同可能产生“碰撞”(虽然插件有处理机制),且链接随机,不易记忆。

使用 hexo-abbrlink2 插件

这是 hexo-abbrlink 的升级版,采用自增 ID 机制,而非哈希算法。

安装

1
npm install hexo-abbrlink2 --save

配置

1
2
3
4
permalink: posts/:abbrlink.html

abbrlink:
start: 100 # 启起始文章id,默认为0 ,可以自定义,比如100

配置后生成的链接为:

1
2
3
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 字段的哈希值链接。

配置:

1
permalink: :hash.html

生成链接示例:

1
https://gloamfox.github.io/3b48da9a3b8b.html

优点:简短,date 字段在创建时就确定,链接稳定。
缺点:若后续修改文件名,URL 也会变化,不够灵活。

使用 :year:month:day:hour:minute:second 生成 URL(推荐)

这是 Hexo 原生支持的方案,利用文章创建时间生成唯一链接。

配置:

1
permalink: :year:month:day:hour:minute:second.html

生成链接示例:

1
https://gloamfox.github.io/20210412131554.html

配合 pretty_urls 设置可进一步优化:

1
2
3
pretty_urls:
trailing_index: true
trailing_html: true # 若设为 false,则 URL 末尾不显示 .html

优点

  • 完全原生,无需插件;
  • 链接基于文章的 date 字段(创建时已确定),永不改变;
  • 结构清晰、长度固定、无乱码,SEO 友好;
  • 不受文件名修改影响。

注意事项

  • 若去掉 .htmltrailing_html: false),某些平台发外链时可能自动追加 / 导致 404,建议保留 .html
  • date 字段需在每篇文章的 Front-matter 中明确指定,避免使用文件创建时间作为替代,以确保跨环境一致性。

总结

对于绝大多数 Hexo 用户,采用日期生成永久链接是最稳妥、最简洁的终极方案。它不仅解决了中文乱码、文件名变动等核心痛点,还能保持 URL 的永久有效,是提升博客 SEO 与用户体验的最佳实践。