优化Hexo博客永久链接的方法

前言

Hexo默认的永久链接格式层级比较复杂,深度太大不利于 SEO,而且默认链接的格式是根据日期定义,一旦我们修改文章的日期,那么链接就会改变。

[^SEO]: 全称为 Search Engine Optimization(搜索引擎优化),是通过优化网站结构、内容、链接等要素,提升网站在搜索引擎自然搜索结果中排名的技术。对于博客而言,合理的链接结构(如层级浅、包含关键词)能帮助搜索引擎更高效地抓取和理解页面内容,从而提升文章的曝光度。

这将会造成

  1. 最直接的后果:原链接失效,出现 404 错误
  2. 间接影响:搜索引擎收录与博客权重受损

修改文章日期 = 破坏链接永久性,会直接导致 404 错误和搜索引擎收录问题。

优化方法

优化方法有很多种,这里我只写一种优化方法hexo-abbrlink,也是最方便最推荐的方法。


利用hexo-abbrlink插件可以将Hexo生成的永久链接转化为一个随机值

核心优势:链接不依赖文章日期、标题,修改这些信息后哈希值不变,永久链接始终有效,避免 404 和 SEO 权重丢失。

对比维度 Hexo 默认永久链接 hexo-abbrlink 插件生成链接
链接生成逻辑 依赖文章「日期(年 / 月 / 日)+ 标题」动态变量,格式通常为 :year/:month/:day/:title/ 基于 CRC16/CRC32 算法生成文章唯一哈希值,格式可自定义(如 posts/:abbrlink/
典型链接示例 https://xxx.com/2025/09/26/hexo-link-opt/ https://xxx.com/posts/abc123/(hex 格式)或 https://xxx.com/posts/123456/(dec 格式)
链接永久性 差:修改文章日期 / 标题后,链接直接变更,原链接失效 优:哈希值与文章绑定,修改日期 / 标题不影响链接,永久有效
SEO 友好性 较差:层级深(4-5 级),不利于爬虫抓取;标题含特殊字符时易出现链接乱码 较优:层级浅(1-2 级),爬虫抓取效率高;哈希值简洁无乱码,可搭配关键词路径(如 tech/abc123
用户可读性 一般:可通过日期 + 标题初步判断文章主题,但链接冗长 一般:哈希值无语义,但可通过自定义路径(如 java/def456)补充主题信息
修改灵活性 差:修改日期 / 标题必变链接,需手动处理 301 重定向 优:支持自由修改文章元信息(日期、标题),无需调整链接,无额外操作成本
兼容性与配置成本 无配置成本:Hexo 原生支持,无需额外安装插件 低配置成本:需安装插件 + 简单配置(选算法、定义路径),文档清晰易上手
适用场景 文章发布后几乎不修改日期 / 标题,追求链接含语义信息的场景 需频繁调整文章元信息(如补档旧文、修正时间)、注重链接稳定性和 SEO 效率的场景

配置过程

1
2
# 使用 npm 安装插件
npm install hexo-abbrlink --save

修改Hexo配置文件的 permalink: 字段

1
permalink: posts/:abbrlink.html

在_config.yml里增加 hexo-abbrlink 插件的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# hexo-abbrlink
abbrlink:
alg: crc32 #支持crc16和crc32算法(默认crc16)
rep: hex #支持dec和hex值(默认dec)
drafts: false #(true)Process draft,(false)Do not process draft. false(default)
# Generate categories from directory-tree
# depth: the max_depth of directory-tree you want to generate, should > 0
auto_category:
enable: true #true(default)
depth: #3(default)
over_write: false
auto_title: false #enable auto title, it can auto fill the title by path
auto_date: false #enable auto date, it can auto fill the date by time today
force: false #enable force mode,in this mode, the plugin will ignore the cache, and calc the abbrlink for every post even it already had abbrlink.

示例

生成的链接将如下所示:

1
2
3
4
5
crc16 & hex
https://post.zz173.com/posts/66c8.html

crc16 & dec
https://post.zz173.com/posts/65535.html

1
2
3
4
5
crc32 & hex
https://post.zz173.com/posts/8ddf18fb.html

crc32 & dec
https://post.zz173.com/posts/1690090958.html

也可以在文章的 front-matter 部分手动填写 abbrlink 字段的值

1
2
3
4
5
title: 优化 Hexo 的永久链接
toc: true
abbrlink: hexo-permalinks #注意这部分
date: 2025-09-26 00:00:00

此时永久链接格式就是 https://lxzblog.click/posts/hexo-permalinks.html

本文参考文章:优化 Hexo 网站的永久链接格式