Hexo-abbrlink生成唯一永久文章链接

原文 首发 北宸的小站,欢迎访问!!!

前言

在做次优化之前,hexo-next文章链接默认的生成规则是::year/:month/:day/:title,是按照年、月、日、标题来生成的。
比如:https://www.liaofuzhan.com/2019/08/12/hello-world/ 这样,如果文章标题是中文的话,URL链接是也会是中文,

image

复制后的链接是一长串,非常不利于阅读,也不简洁。。。😢

http://localhost:4000/2019/08/13/tech/hexo/Hexo%20Next%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E5%93%88%E6%9E%97%E6%91%87%E7%89%B9%E6%95%88/

一种解决方案是:使用hexo-permalink-pinyin插件,将中文转英文,参考我的这篇文章:Hexo NexT中文链接转拼音(关于中文md文件名的问题)

这样方案也存在一定的缺陷,比如修改了文章标题,重新hexo三连后,URL就变了,以前的文章地址变成了404。而且这样生成的URL层级也很深,不利于SEO。

那能不能生成唯一不变的URl链接呢?答案是可以的,已经有人给我们实现了。这就是我们要说的hexo-abbrlink插件,简单易用,为作者点赞(≧▽≦)/

参考github:hexo-abbrlink

使用

安装插件

npm install hexo-abbrlink --save

执行此命令可能会不成功,提示你缺少相应的依赖
比如babel-eslintmini-css-extract-pluginwebpack-cli...
使用npm命令安装即可,比如npm install eslint@4.x babel-eslint@8 --save-dev

配置

修改根目录站点配置文件config.yml,改为:

permalink: posts/:abbrlink.html  # 此处可以自己设置,也可以直接使用 :/abbrlink
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

生成完后,原md文件的Front-matter 内会增加abbrlink 字段,值为生成的ID 。这个字段确保了在我们修改了Front-matter 内的博客标题title或创建日期date字段之后而不会改变链接地址。

hexo三连试一下效果吧~(__)Y

推荐阅读更多精彩内容