hexo文章的url在博客根目录的_config.yml中进行配置,默认配置如下:
1 | permalink: :year/:month/:day/:title/ #年/月/日/文章路径 |
这里的:title为source/_post下的相对路径,但是这样的话很容易造成url中文乱码,和不同浏览器因为字符集的问题导致的url失效。
这里建议尽量不使用默认配置,推荐使用如下两种方案:
- 方案一:自定义url
修改_config,yml配置为然后当我们发布文章时,在文章头部信息中添加1
permalink: :year/:month/:day/:id/ #这里我们把title替换为id
id信息这样就可以避免中文乱码造成的影响。1
2
3
4
5
6
7
8
9
10
title: 测试文章
date: 2021-04-22 11:02:53
categories: 类别一
id: blog001 # 此处的blog001对应url中的id部分
tags:
- C++
- C#
- java - 方案二:使用hash值
这个方法适合比较懒的朋友,如果不想每次都要自定义文章id,可以直接修改_config.yml为:这样每次生成文章url,会自动生成hash值,保证不重复且不会因为编码出错。1
permalink: :year/:month/:day/:hash/ #这里我们把title替换为hash
这两种方案可以解决url的错误,并且自定义喜欢的url,但是默认的配置确实也可以用,但是格外注意一直情况,当你使用默认配置时,如果文章文件名或者文件夹名中含有#字符,在进入浏览器后,#后面的文字会被自动注释掉,导致虽然index.html存在,url也正常,但是就是无法点击跳转,这个是hexo一个很坑的地方吧!
最后贴上hexo的url自定义规则,大家自行参考,选择适合自己的方法吧!
| 变量 | 描述 |
|---|---|
| :year | 文章的发表年份(4 位数) |
| :month | 文章的发表月份(2 位数) |
| :i_month | 文章的发表月份(去掉开头的零) |
| :day | 文章的发表日期 (2 位数) |
| :i_day | 文章的发表日期(去掉开头的零) |
| :hour | 文章发表时的小时 (2 位数) |
| :minute | 文章发表时的分钟 (2 位数) |
| :second | 文章发表时的秒钟 (2 位数) |
| :title | 文件名称 (relative to “source/_posts/“ folder) |
| :name | 文件名称 |
| :post_title | 文章标题 |
| :id | 文章 ID (not persistent across cache reset) |
| :category | 分类。如果文章没有分类,则是 default_category 配置信息。 |
| :hash | SHA1 hash of filename (same as :title) and date (12-hexadecimal) |