使用哈希值配置Hexo永久url固定地址

以下是具体步骤:

首先,确保安装了 hexo-abbrlink 插件:

1
npm install hexo-abbrlink --save

2.配置 Hexo 自动生成哈希值

  1. 安装必要的模块

    如果还没有安装 crc 模块,请先安装:

    1
    npm install crc
  2. 创建 Hexo 插件脚本

    scripts 目录(如果没有,请创建一个)下创建一个新文件 generate-crc32.js,并将以下内容复制到该文件中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    const fs = require('fs');
    const path = require('path');
    const matter = require('gray-matter');
    const crc32 = require('crc').crc32;

    hexo.extend.filter.register('before_generate', function() {
    const postsDir = path.join(hexo.source_dir, '_posts');

    fs.readdir(postsDir, (err, files) => {
    if (err) {
    console.error('Error reading posts directory:', err);
    return;
    }

    files.forEach(file => {
    const filePath = path.join(postsDir, file);
    const content = fs.readFileSync(filePath, 'utf8');
    const { data, content: postContent } = matter(content);

    // 生成 crc32 哈希值
    const hash = crc32(data.title).toString(16);
    data.abbrlink = hash;

    const newContent = matter.stringify(postContent, data);
    fs.writeFileSync(filePath, newContent, 'utf8');

    console.log(`Generated CRC32 for ${file}: ${hash}`);
    });
    });
    });
  3. 配置 _config.yml

    在 Hexo 的 _config.yml 文件中添加或更新以下配置:

    1
    2
    3
    abbrlink:
    alg: crc32 # 使用 crc32 算法
    rep: hex # 生成的链接格式为 16 进制

    配置永久链接格式:

    1
    permalink: posts/:abbrlink.html
  4. 重新生成站点

    现在,每次运行 hexo generatehexo server 时,Hexo 都会在生成内容之前自动执行脚本,生成并添加哈希值到文章的 front-matter 中。

    运行以下命令来清理并重新生成站点:

    1
    2
    hexo clean
    hexo generate

    然后部署:

    1
    hexo deploy