Hexo-abbrlink生成唯一文章链接

Hexo 在生成文章链接时,默认是按照年、月、日、标题来生成的,可以在站点配置文件中指定 new_post_name 的值。默认是 :year/:month/:day/:title,如果文章标题是中文的话,URL 链接是也会包含中文,生成的文章链接如下图所示:

nO8Cef.png

复制后的链接是一大堆字符串编码:

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 插件,简单易用。

参考:

hexo-abbrlink

安装插件

1
npm install hexo-abbrlink --save

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

配置

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

1
2
3
4
permalink: :posts/abbrlink.html  # 此处可以自己设置,也可以直接使用 :/abbrlink
abbrlink:
alg: crc32 #算法: crc16(default) and crc32
rep: hex #进制: dec(default) and hex

生成的链接将会是这样的(官方样例):

1
2
3
4
5
6
7
8
9
10
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

点击查看

本文标题:Hexo-abbrlink生成唯一文章链接

文章作者:北宸

发布时间:2019年08月22日 - 23:36:38

最后更新:2023年08月19日 - 13:26:00

原始链接:https://www.liaofuzhan.com/posts/4084686398.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------
🌞