hexo默认url格式存在的问题

Hexo在生成博客文章链接时,默认的静态URL格式是 :year/:month/:day/:title,也就是按照年、月、日、标题格式来生成固定链接的,如http://xxx.yy.com/2020/07/06/hello-world

这样的话就会存在一些问题:

  • 如果你的标题是中文的话,你的URL链接就会包含中文,例如:

    image-20231204194948770

    这样的url路径复制后会将中文变成一大堆字符串编码:https://cnhuazhu.top/butterfly/2023/03/01/Flask/%E9%83%A8%E7%BD%B2Flask%E9%A1%B9%E7%9B%AE%E8%87%B3%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E7%9A%84Docker%E5%AE%B9%E5%99%A8%E5%86%85/

    如果你在其它地方用了你自己这篇文章的url链接,偶然你又修改了该文章的标题,那这个url链接就会失效

  • 这样的url格式中年月日都会有分隔符,生成的链接会成为一个四级目录,对于搜索引擎来说并不是很友好。

    百度蜘蛛在抓取网页时遵循以下规则:

    网页的抓取频率与其权重和信用度成正比,尤其是对网站的首页和内页。通常,蜘蛛首先抓取网站的首页,因为首页通常具有更高的权重,而且大多数链接都指向首页。然后,通过首页抓取网站的内页,但并非所有内页都会被蜘蛛抓取。

    搜索引擎认为对于一般的中小型站点,3层结构足以包含所有内容,因此蜘蛛主要抓取前三层的内容。超过三层的内容被认为相对不重要,因此蜘蛛不会经常爬取这些内容。因此,在设计链接结构时,最好将permalink后面的层级控制在2个斜杠以内。

hexo-abbrlink的安装配置

为了解决上面提到的问题,我们使用Hexo的插件hexo-abbrlink,它能将 Hexo 生成的永久链接转化为一个固定的随机值,极大的缩短了永久链接的长度。一旦生成一个随机值,之后对文章的标题或者时间进行任何修改,这个随机的 abbrlink 是不会发生任何变化的,也为 Hexo 的维护提供了便利。

博客目录下执行命令安装:

1
$npm install hexo-abbrlink --save 

修改_config.yml文件中的配置项(记得把原来的permalink:删除掉):

1
2
3
4
5
#设置永久链接
permalink: posts/:abbrlink.html
abbrlink:
alg: crc16 #算法: crc16(default) and crc32
rep: dec #进制: dec(default) and hex

注意

参考文章https://zhuanlan.zhihu.com/p/169492685

在生成之前就要改好算法和形式。不然后面再改的话会导致链接不统一。我就踩过坑,但后来是一个文章一个文章删除abbrlink:的值才改过来的,还好我文章不是很多。

话说最近看到了Hexo-abbrlink2这个插件,可以从1.html开始编。

我试用了一下,会导致文章重复,正在研究如何解决。如果能从1开始编写的话,这样更容易看得出写了多少篇文章,当前上传和修改的是哪一篇。后面再研究。

PS:刚使用这个插件后,阅读人数和评论都会变为0,介意慎用!综上所述,这插件适合新站!

参考文章

侵权删: