ReNexT:利用 abbrlink 插件生成唯一且简洁的 URL

使用 abbrlink 的几个理由:

  • 当你的链接太长或者是含有中文时,分享链接时会很丑,不易阅读
  • 改变了文章标题或名字可能导致搜索引擎收录失败,原有链接失效,404 警告
  • 文章名冲突,或者是想为同一篇文章写不同版本

前言

利用 abbrlink 插件生成唯一且简洁的 URL,作者是这位 ohroy

这里是 abbrlink 的 Github 项目地址 https://github.com/ohroy/hexo-abbrlink

abbrlink 的原理:

文章标题 + 创建时间 利用 CRC16/32 算法 最终生成 唯一的文章链接

安装

打开 Hexo 根目录,运行 Git Bash

npm install hexo-abbrlink --save

安装之后,输出类似这样

added 5 packages, and audited 273 packages in 3s

19 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities

配置

打开 Hexo 根目录下的 _config.yml

寻找到配置文件中的 permalink

permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true
trailing_html: true

解释一下默认链接设置的含义

permalink: :year/:month/:day/:title/
# :year 文章发表的年份
# :month 文章发表的月份
# :day 文章发表的月份
# :title 文章文件名

比如你在 2022 年 5 月 20 日时建立了一个名称为 How_To_Code.md 的文章

那么生成的链接将会是这样的

http://<你的网站网址>/2022/05/20/How_To_Code

附上链接属性参考表:

属性 含义
:abbrlink abbrlink 插件提供,生成唯一且简洁的 link
:year 文章的发表年份(4 位数)
:month 文章的发表月份(2 位数)
:i_month 文章的发表月份(无前置 0
:day 文章的发表日期 (2 位数)
:i_day 文章的发表日期(无前置 0
:hour 文章发表时的小时 (2 位数)
:minute 文章发表时的分钟 (2 位数)
:second 文章发表时的秒钟 (2 位数)
:title 文件名称(包含目录)
:name 文件名称 (单文件名)
:post_title 文章标题
:id 文章 ID (hexo clean 后会改变)
:category 文章分类
:hash 基于 文件名称文章发布日期 的 12 位哈希值

更多样例可以到官方文档中查阅 hexo.io/docs/permalinks

修改 Hexo 根目录下的 _config.yml

permalink: :year/:month/:abbrlink/
# 这里为默子的配置,你可以根据自己的喜好来修改
# 如果不了解下面的配置,请勿漏掉最后的'/'号,否则F5刷新会导致浏览器发送错误的MIME类型,进行下载操作
permalink_defaults:
pretty_urls:
trailing_index: true
trailing_html: true

最后,在设置文件中添加如下语句

abbrlink:
alg: crc32
# alg可以选crc32或者是crc16 具体差别请参考原Github项目
# 这里推荐crc32
rep: hex
# rep可以选hex(16进制)或者是dec(十进制) 具体差别请参考原Github项目
# 这里推荐hex(16进制)

启用

清除 Hexo 缓存,重新渲染网页并本地运行

hexo cl && hexo g && hexo s

这时你的所有文章中会加入 :abbrlink 的关键字

---
title: HowToCode
tags:
- 实用分享
abbrlink: f23cd173
date: 2030-05-20 13:14:00
---

温馨提醒:请不要删除该关键字,删除后可能会改变你的链接

结尾

今天的教程就到这里结束了

还有什么问题可以访问我的个人网站 histone.top

或者在评论区留言,默子看到会回复的

ReNexT 系列: