前言

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

这种默认配置的缺点就是一般文件名是中文,导致 url 链接里有中文出现,这会造成很多问题,也不利于 seo ,另外就是年月日都会有分隔符。

知识点

  1. 百度蜘蛛抓取网页的规则: 对于蜘蛛说网页权重越高、信用度越高抓取越频繁,例如网站的首页和内页。蜘蛛先抓取网站的首页,因为首页权重更高,并且大部分的链接都是指向首页。然后通过首页抓取网站的内页,并不是所有内页蜘蛛都会去抓取。

  2. 搜索引擎认为对于一般的中小型站点,3层足够承受所有的内容了,所以蜘蛛经常抓取的内容是前三层,而超过三层的内容蜘蛛认为那些内容并不重要,所以不经常爬取。出于这个原因所以permalink后面跟着的最好不要超过2个斜杠。

    对于这个问题,我们使用 hexo-abbrlink 插件可以完美解决。

安装教程

  1. 在博客根目录 [Blogroot] 下打开终端,运行以下指令安装 hexo-abbrlink 插件:
1
npm install hexo-abbrlink --save
  1. 修改文件 [Blogroot]_config.yml
1
2
3
4
5
#设置永久链接
permalink: posts/:abbrlink.html # 此处可以自己设置,也可以直接使用 :/abbrlink
abbrlink:
alg: crc16 #算法: crc16(default) and crc32
rep: dec #进制: dec(default) and hex

Abbrlink 插件拥有两项设置选项:

  • alg: 算法(目前支持 crc16 和 crc32 算法,默认值是 crc16)
  • rep: 形式(生成的链接可以是十六进制格式也可以是十进制格式,默认值是十进制格式)

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

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 字段之后而不会改变链接地址。

  1. 最后执行 hexo 命令三连: hexo c、hexo g、hexo s,即可看到效果

注意点

  1. 注意在生成之前就要改好算法和形式,不然后面再改的话会导致链接不统一。
  2. 刚使用这个插件后,阅读人数和评论都会变为0,介意慎用!综上所述,这插件适合新站!