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) |