Hexo Permalink简化

本文介绍了在Hexo中如何简化含有中文的文档名所导致的复杂永久链接。方法一是自定义permalink,在配置文件中设定格式,但链接会随文件目录变化;方法二是使用插件,通过替换@@abbrlink生成基于文件内容的hash值链接,避免了链接改变的问题。
摘要由CSDN通过智能技术生成

Hexo Permalink简化

在文档名有中文的时候,因为汉字会被转义,默认的永久链接会非常复杂,具体原因可以看这一篇文章

阮一峰 关于url编码

有两种方法优化。

方法一:自定义

首先,在scaffoldspost.md中,加入urlname元素。

title: {{ title }}
urlname:
date: {{ date }}
tags:
categories:

然后,在配置文件_config.yml中,将永久链接permalink的形式改为

permalink: :category/:urlname/

也就是类别加上自定义的url链接。

每次写文章时,可以自己设计该页的url,使得它变得简单,同时也利于区分。

但是,这种修改方法的链接会随着文件目录的改变而改变,

比如一篇文章HelloWorld.md本来放在_posts目录下,链接为https://xxx/_posts/HelloWorld.md

之后归类到_posts/A目录下,那么链接变为https://xxx/_posts/A/HelloWorld.md

这样不太利于分享,所以推荐使用第二种方法。

方法二:插件

使用hexo-abbrlink这个插件

  1. 安装

    npm install hexo-abbrlink --save
    
  2. 设置

    _config.yml文件中修改永久链接格式

    permalink: posts/:abbrlink.html
    abbrlink:
      alg: crc32  # 算法:crc16(default) and crc32
      rep: hex    # 进制:dec(default) and hex
    

    posts部分是可以更改的,也可以仿照方法一添加一个关键词便于识别

    permalink: :keywords/:abbrlink.html
    
  3. 生成

    在根目录创建Gruntfile.js文件,让插件到source/_posts/下读取所有的.md文件,把文件中的@@abbrlink替换成文件内容的hash值。

    module.exports = function(grunt) {
     
      grunt.initConfig({
    
        rewrite: {
          abbrlink: {
            src: 'source/_posts/**/*.md',
            editor: function(contents, filepath){
              const crypto = require('crypto');
              const hash = crypto.createHash('sha256');
    
              hash.update(contents);
              var hashValue = hash.digest('hex');
    
              return contents.replace(/@@abbrlink/g, hashValue.substring(0, 16));
            }
          },
        },
      });
     
      grunt.loadNpmTasks('grunt-rewrite');
    };
    

这种方法生成的链接是不带目录的,直接就是第二步设置中permalink的样式,所以也没有了被改变的风险。

参考

  1. http://blog.jvaeyhcd.wang/posts/05c9df7e0c47bd64.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值