在给博客绑定完域名后,终于实现了直接通过域名访问。但是总觉得又少了什么,能不能在搜索引擎中找到我的博客呢?于是在一番搜索下,无一例外的都是提示没有找到该URL。又是在一番搜索之下,了解到需要给自己的网站做SEO,提交SiteMap给搜索引擎。期间在提交SiteMap过程中,看到提交的URL文章结构层级实在复杂,文章链接默认的生成规则是::year/:month/:day/:title
,这相当于访问了三层目录,不利于SEO。最终我在github上找到了合适的解决方案。
A Hexo plugin to generate static post link based on post titles.
1.安装
先在博客文件夹下安装改插件:
npm install hexo-abbrlink --save
2.配置插件
在项目的_config.yml文件中加上permalink字段
url: https://yykaoyanupup.xyz/
permalink: posts/:abbrlink.html # 此处可以自己设置,也可以直接使用 :/abbrlink
abbrlink:
alg: crc32 #算法: crc16(default) and crc32
rep: hex #进制: dec(default) and hex
3.实现细节
可以看到abbrlink配置了alg和rep,这里简单介绍下配置内容
3-1:CRC
CRC本身是“冗余校验码”,在计算机网络中有接触过,在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段 。如果要实现差错检验,必须在发送数据的后面增加校验码,否则实现不了。校验码的值由校验方法决定。CRC循环冗余校验的细节这里先不做介绍,一般网卡的生成多项式都是CRC-16或者32。位数很多。这样就降低漏检率。比奇偶校验强多,效率也高。CRC32就是表示会产生一个32bit(8位十六进制数)的校验值。
3-2:hex
Hex是一种编码吗,就是把一个8位的字节数据用两个十六进制数展示出来,编码时,将8位二进制码重新分组成两个4位的字节,其中一个字节的低4位是原字节的高四位,另一个字节的低4位是原数据的低4位,高4位都补0,然后输出这两个字节对应十六进制数字作为编码。Hex编码后的长度是源数据的2倍
4.优化效果
配置不同校验码和编码格式会对生成的ID有不同的效果,这里展示一些样例:
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
配置完成后通过hexo三连会发现,文章的层次目录也发生了改变,文章新增了abbrlink字段,这样链接就确定下来了,无论怎样更改文章都不会对链接产生影响。