修改HEXO文章链接名称

之前设置HEXO生成网页链接的时候, 没有选择常规的permalink: :year/:month/:title/的写法。
为了不在链接路径中显示年月信息,改成了permalink: :post_title/,然后发现中文标题名称转换成链接的时候,中文标题URL会被编码成 %E4%B8%AD%E6%96%87…,又丑又长。
如果在网页内部跳转还好,浏览器会自动转码成正常的汉字,但分享到其他平台,未正确解码的时候,看到的是一堆%E4%B8%....之类的乱码。

想把这个汉字链接转化成非乱码的形式,好像是因为ASCII编码和UTF8编码的缘故,没法处理。
很多博友会用纯数字编号代替,或者用拼音重写链接地址,总之都挺麻烦的。

尝试

网上搜到可以用:slug别名重写链接地址,于是尝试把一篇post文章的开始部分的 Front-matter 加上了 slug: example-title,然后把站点 _config.yml 的 permalink 改成 :slug/

修改post的前面部分如下:

---
title:  修改HEXO文章链接名称
slug: post-permalink-Modify/
date: 2025-07-21
---
 ...

修改站点 _config.yml 的链接地址如下:

  ...
permalink: :slug/
permalink_defaults: :slug/
pretty_urls:
  trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
  trailing_html: true # Set to false to remove trailing '.html' from permalinks
  ...

结果没有效果,回退到了post文件名作为链接。

官方文档方法

查了HEXO官方对于链接设置方法的说明。

permalink	覆盖文章的永久链接. 永久链接应该以 / 或 .html 结尾	null

并没有找到采用 slug写法替代原始title名称的说法(怀疑HEXO没有配置这个方法)。
只能直接指定permalink覆盖默认链接方式,获得需要的链接。

修改后的post前面Front-matter 如下:

---
title:  修改HEXO文章链接名称
permalink: post-permalink-modify/
date: 2025-07-21

测试的时候,还遇到一个bug,刚开始没有仔细看说明文档,写成permalink: post-permalink-modify,鼠标放在网页链接位置显示post-permalink-modify,但不能正常打开(以未知文件形式下载)。
回过头去看官方说明文档,系统_yaml配置中设置trailing删掉了html,又没有生成”文件夹+index.html“。
重新给permalink: post-permalink-modify/的末尾加上*/以后显示正常了。

得看官方说明文档~~
(⊙o⊙)!!

中文网页链接地址

由于中文网页必须采用UTF-8编码的缘故, 网页的链接地址使用中文必然需要转码,影响分享链接的可读性和输入方便性。
英文网页会有很多人把英文标题直接“空格”转短横“-”连接所有单词作为链接地址,但实际上表现效果也不好说。
虽然可读性强,但标题太长,分享和输入的便捷性影响极大。

另外,注意到很多大型网站会选择直接一串数字表示,虽然没有可读性,但简练、方便、快捷。
以后试试直接简短的数字作为固定链接,文章不多的情况下,2~3个数字就可以搞定了。

参考资料:

  1. HEXO官方说明文档 https://hexo.io/zh-cn/docs/front-matter