Hexo上博文永久链接唯一化的实现

默认永久链接格式的问题和唯一化的意义

  • 不利于SEO:

    Hexo永久链接的默认格式是:year/:month/:day/:title/,如果文章标题是中文的话,文章路径中就含有中文字符,不利于seo。

  • 不利于Google、百度等抓取:

    路径包含了年月日三个层级,太深不利于抓取。

  • 不利于社会化分享和搜索:

    使用:year/:month/:day/:title/默认链接格式时,如AddThis分享后就无法跳转到blog的源链接,而Algolia也存在搜索结果跳转关联页面时报404。

所以,就要考虑:

  • 简化永久链接格式,即:简短化
  • 使链接唯一化,即:文件标题随意修改,文章的链接也永远不变,而不会像原来采用:year/:month/:day/:title/的链接格式会因文章标题改变,而导致最初的链接失效造成死链。

所以,寻寻觅觅后发现大神落月rozbo搞出插件hexo-abbrlink(GitHub)、hexo-abbrlink(npmjs.com)为我们解决了这个问题。

让我们来看看如此精妙的实现方式!

安装插件

安装hexo-abbrlink插件,在站点根目录执行:

1
$ npm install hexo-abbrlink --save

执行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cd taoblog
$ npm install hexo-abbrlink --save
npm WARN babel-eslint@10.0.2 requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

+ hexo-abbrlink@2.0.5
added 39 packages from 24 contributors in 5.479s


╭────────────────────────────────────────────────────────────────╮
│ │
│ New major version of npm available! 5.6.0 → 6.11.2 │
│ Changelog: https://github.com/npm/cli/releases/tag/v6.11.2 │
│ Run npm install -g npm to update! │
│ │
╰────────────────────────────────────────────────────────────────╯

修改站点配置文件

修改站点配置文件_config.yml ,注释原先的permalinkpermalink_defaults,并添加如下设置:

1
2
3
4
5
6
# permalink: :year/:month/:day/:title/
# permalink_defaults:
permalink: posts/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: hex # 进制:dec(default) and hex

生成并部署

1
2
3
$ hexo clean
$ hexo g
$ hexo d

执行$ hexo g时,提示信息的开头与原来有区别如下,这显示了已为文章生成了永久链接:

1
2
3
4
5
6
7
$ hexo clean
$ hexo g
INFO Start processing
INFO Generate link 786cd75a for post [Hexo上NexT主题配置WidgetPack的Rating widget文章投票功能]
INFO Generate link fc418d47 for post [MarkDown支持代码高亮]
INFO Generate link 14479307 for post [Typora中设置文字字体、字号和颜色]
INFO Generate link 77130092 for post [Hexo添加RSS]

同时还会在文章的front-matter中加入abbrlink:,如下:

1
2
3
4
5
title: Hexo上NexT主题配置WidgetPack的Rating widget文章投票功能
tags: hexo
categores: web&blog
abbrlink: 786cd75a
date: 2019-09-04 18:07:18

之后的$ hexo d顺利完成。

最终生成的永久链接形式如:

https://adago2x.github.io/posts/786cd75a.html

Blog上分享链接后,在第三方社区跳转链接毫无问题,很完美!

建议

永久链接的设置最好在Hexo部署到位后,开始着手发布文章前进行设置。

在中途设置就会导致之前发布文章后原来相关的社会化分享链接、搜索失效,评论、投票等数据会清零,如果个人不介意的话倒也无所谓。

~END~