Hexo 生成永久文章链接


Hexo 默认文章链接生成规则是按照年、月、日、标题来生成的。一旦文章标题或者发布时间被修改,URL 就会发生变化,之前文章地址也会变成 404,而且 URL 层级很深,不利于分享和搜索引擎收录。

如果文章标题中有中文,URL 被转码后会很长,比如: https://serverless-page-bucket-x0ly03je-1306800607.cos-website..myqcloud.com/2021/08/10/Hexo%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E5%AE%89%E8%A3%85%E5%92%8C%E4%BC%98%E5%8C%96%EF%BC%88%E4%BA%8C%EF%BC%89%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A6%96%E9%A1%B5/。接下来介绍一个插件 hexo-abbrlink,该插件会为每篇生成一个唯一字符串,并不受文章标题和发布时间的影响,比如:https://kaiboshi.gitee.io/p/df27ccfb.html

1.安装

点击即可访问插件源码地址 hexo-abbrlink

npm install hexo-abbrlink --save

可能会出现依赖,依据提示安装即可。

2.配置

修改博客根目录配置文件 _config.ymlpermalink

# permalink: :year/:month/:day/:title/
permalink: p/:abbrlink.html  # p 是自定义的前缀
abbrlink:
    alg: crc32   #算法: crc16(default) and crc32
    rep: hex     #进制: dec(default) and hex

不同算法和进制生成不同的格式:

crc16 & hex
https://post.zz173.com/posts/66c8.html
crc16 & dec
https://post.zz173.com/posts/65535.html

crc32 & hex
https://post.zz173.com/posts/8ddf18fb.html
crc32 & dec
https://post.zz173.com/posts/1690090958.html

局限性

[固定] crc16 的最大帖子数为 65535。(现在,如果一个 abbrlink 已经存在,它将更改另一个并一次又一次地尝试……)

3.验证

先清理下本地的文件 hexo clean,然后重新生成 hexo g,启动博客 hexo s。该插件会在每篇文章的开头增加内容:

abbrlink: d6af1ab3

这个字符串就是这篇文章的唯一标识,无论修改标题还是发布文章都不会改变。浏览器打开 http://localhost:4000/ 查看成果吧!

4.出现错误

要是出现undefined

http://localhost:4000/posts/undefined.html

解决办法:
老文件手动添加:
abbrlink: d6af1ab3

新文件:

hexo new "xxxx"
hexo clean
hexo g

打开新建的xxxx.md文件front-matter会有abbrlink: d6af1ab3

更多内容欢迎访问我的博客:Kalbim


文章作者: Kaiboshi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kaiboshi !
评论
  目录