修改hexo生成的html文件名

背景

hexo 默认情况下,生成的HTML文件名是new post时输入的文件名,而在创建文章时,这个文件名输入相信很多人都是输入的中文,那么最终生成博客时,生成的文件也是中文文件命,这个对搜索引擎是比较不友好的,还一个点就是有些插件对url长度有限制,那么中文的文件名url经过url编码后会很长很长,无法使用。下面就来讲讲怎么修改这个url。

方案

这个生成文件名的修改网上也有一些方案,比如自己写脚本来批量改相关内容,参考这片文章:
修改Hexo自动生成的HTML文件名

也有一些现成的插件呀,参考下面这个文章,里面的GitHub连接点进去还有另一个插件:
永久链接

不过吧,其实没那么麻烦,因为这个功能hexo本身已经提供了的。

hexo 根目录下的_config.yml里面有以下参数:

1
2
permalink: :year/:month/:day/:title/
permalink_defaults:

这个其实就是指定了生成文章后的url的,接下来就讲下怎么改,首先看下面这个我的配置:

1
2
3
permalink: :year:month:day/:urlname.html
permalink_defaults:
urlname: :title

首先将url的层级减少,但是最好不要减完,减少是因为这样对于搜索引擎比较友好,不减完是为了让文章不至于全部在一个层级里面,这样会很难维护,我这里改成了只有两级。
这里可以应用的参数有以下这些默认的:

但是有没有发现,上面我的配置里面有个urlname,这里里面并没有,这个参数就是自定义的一个参数,这里是允许我们自定义参数的,就在我们写博客的头部,如我的一个博客的头部内容是:

1
2
3
4
5
6
---
title: 基于hexo构建博客
date: 2021-02-28 17:27:15
tags: 博客搭建
urlname: blog_init_2
---

那么对应的博客的uri就是/20210228/blog_init_2.html

这个文件头部模板是在博客的scaffold/post.md配置的,我们可以直接将这个自定义参数加在里面,这样每次新建文章的时候就会自动生成了

1
2
3
4
5
6
7
---
title: {{ title }}
date: {{ date }}
tags:
urlname:
---