原文 首发 北宸的小站,欢迎访问!!!
前言
在做次优化之前,hexo-next文章链接默认的生成规则是::year/:month/:day/:title
,是按照年、月、日、标题来生成的。
比如:https://www.liaofuzhan.com/2019/08/12/hello-world/
这样,如果文章标题是中文的话,URL链接是也会是中文,
复制后的链接是一长串,非常不利于阅读,也不简洁。。。
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-eslint
、mini-css-extract-plugin
、webpack-cli
...
使用npm命令安装即可,比如npm install [email protected] 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