Hexo博客文章链接优化

Hexo博客文章链接优化
沧浪同学1 Hexo博客文章链接优化
1.1 前言
hexo版: 7.3.0
hexo默认文章链接的路径配置在:
_config.yml
中,其为:1
permalink: :year/:month/:day/:title/ # 格式为年月日+文章标题
这样配置的缺点是,过于冗长,一旦遇到中文标题,链接分享出去转码后就会相当炸裂
这简直太不优雅了,而且一旦修改文章发布日期或者标题,链接立马失效,造成大量死链,这就很鸡肋了,于是,我们引入
hexo-abbrlink
插件,可以实现自定义内容+随机数字的效果。
1.2 博客网址链接 URL 唯一且永久化
1.2.1 安装hexo-abbrlink
- 使用插件 hexo-abbrlink 可以做到自定义文章链接,复制下面的命令粘贴进行安装:
1 | npm install hexo-abbrlink --save |
1.2.2 配置hexo-abbrlink的相关参数
- 然后在 Hexo 的根目录的配置文件
_config.yml
中,找到permalink:
参数进行修改,改为:
1 | permalink: 自定义内容/:abbrlink.html # 实测部署到云端后不显示.html后缀,但在本地运行时是显示的,暂未排查到原因。大概率是服务器 URL 重写规则导致的 |
- 或
1 | permalink: 自定义内容/:abbrlink:/ |
接着,我们在 Hexo 的根目录的配置文件
_config.yml
的末尾配置一些必要参数,我的配置如下,附注释1
2
3
4
5
6
7
8
9
10
11
12
13
14# abbrlink 配置
abbrlink:
alg: crc32 #必选 生成数字的算法 支持 crc16(默认) 和 crc32
rep: dec #必选 生成数字的算法 支持 dec(默认) 和 hex
drafts: false #(true)处理草稿,(false)不处理草稿。 false(默认)
# 从目录树生成分类
# depth: 你想要生成的目录树的最大深度,应该 > 0
auto_category:
enable: true #true(默认)
depth: #3(默认)
over_write: false
auto_title: false #启用自动标题,它可以通过路径自动填充标题
auto_date: false #启用自动日期,它可以通过今天的时间自动填充日期
force: false #启用强制模式,在这种模式下,插件将忽略缓存,并为每个文章计算 abbrlink,即使它已经有了 abbrlink。 这只会更新 abbrlink 而不是其他前置变量。之后再在 md 文件开头中加入
abbrlink
参数:如果文章中未指定
abbrlink: xxx
的值,运行hexo g
命令时,将会根据算法随机为文章生成数字;但是必须要有`abbrlink: 参数
1.2.3 在模板文件中添加abbrlink参数
- 当然,每次手动添加都很不方便,推荐在模板文件中添加,一劳永逸。
- 在本地hexo的根目录中,为
scaffolds
目录下的post.md
文件添加下面的参数:1
abbrlink: # 根据算法随机生成数字,优化访问链接
1.2.4 官方配置信息
最后附上官方对permalink
允许的配置
- 您可以在
_config.yml
配置中调整网站的永久链接或者在每篇文章的 Front-matter 中指定。
1.2.4.1 变量
- 除了下列变量外,您还可使用除了
:path
和:permalink
之外Front-matter
中的所有属性。 变量 描述
变量 | 描述 |
---|---|
:year |
文章的发表年份(4 位数) |
:month |
文章的发表月份(2 位数) |
:i_month |
文章的发表月份(不含前导零) |
:day |
文章的发表日期 (2 位数) |
:i_day |
文章的发表日期(不含前导零) |
:hour |
文章发表时的小时 (2 位数) |
:minute |
文章发表时的分钟 (2 位数) |
:second |
文章发表时的秒钟 (2 位数) |
:title |
文件名称 (相对于 “source/_posts/“ 文件夹) |
:name |
文件名称 |
:post_title |
文章标题 |
:id |
文章 ID (清除缓存时不具有持久性) |
:category |
分类。 如果文章没有分类,则是 default_category 配置信息。 |
:hash |
文件名(与 :title 相同)和日期的 SHA1 哈希值(12位16进制数) |
您可在 permalink_defaults
参数下调整永久链接中各变量的默认值:
1 | permalink_defaults: |
1.2.4.2 示例
1 | source/_posts/hello-world.md |
设置 | 结果 |
---|---|
:year/:month/:day/:title/ |
2013/07/14/hello-world/ |
:year-:month-:day-:title.html |
2013-07-14-hello-world.html |
:category/:title/ |
foo/bar/hello-world/ |
:title-:hash/ |
hello-world-a2c8ac003b43/ |
1.2.4.3 多语种支持
- 若要建立一个多语种的网站,您可修改
new_post_name
和permalink
参数,如下:
1 | new_post_name: :lang/:title.md |
- 当您建立新文章时,文章会被储存到:
1 | $ hexo new "Hello World" --lang tw |
- 而网址会是:
1 | http://localhost:4000/tw/hello-world/ |
1.3 参考
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果