前言
在做次URL优化之前,hexo-next文章链接默认的生成规则是::year/:month/:day/:title
,是按照年、月、日、标题来生成的。
比如:https://blog.mailjob.net/2019/08/12/hello-world/
这样,如果文章标题是中文的话,后面的 title
还会被 urlencode
变成一长串,非常不利于阅读,更不利于 SEO
。
一种解决方案是:使用 hexo-permalink-pinyin
插件,将中文转英文。
这样方案也存在一定的缺陷,比如修改了文章标题,重新hexo
三连后,URL
就变了,以前的文章地址变成了404
。而且这样生成的URL层级也很深,不利于SEO。
那能不能生成唯一不变的URl链接呢?答案是可以的。这就是我们要说的hexo-abbrlink
插件。
参考文献
- hexo-abbrlink仓库:https://github.com/rozbo/hexo-abbrlink
实现步骤
安装
npm install hexo-abbrlink --save
打开 config.yml
,修改 permalink
中类似这样
permalink: posts/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: dec # 进制:dec(default) and hex
这个是使用了各个算法、进制的效果如下
算法 | 进制 | 结果 |
---|---|---|
crc16 | hex | https://blog.mailjob.net/posts/3ab2.html |
crc16 | dec | https://blog.mailjob.net/posts/12345.html |
crc32 | hex | https://blog.mailjob.net/posts/9a8b6c4d.html |
crc32 | dec | https://blog.mailjob.net/posts/1690090958.html |
问题
1、文章的链接都变成了undefined
这个配置完成之后,文章的链接都变成了undefined,新的文章没问题,老的文章就不行了。这个问题其实我们仔细想一下就能明白,我们首先要执行hexo clean
清楚掉以前生成的文章缓存,然后hexo g
重新渲染就ok了