背景
之前的文章有幸被鸿洋的公众号收录,文章内引用了博客中的一篇文章链接:https://jingbin.me/2017/11/23/%E5%BC%80%E5%8F%91%E4%B8%AD%E6%89%80%E9%81%87%E9%97%AE%E9%A2%98%E5%BD%92%E7%BA%B3/;着实尴尬,因为默认生成的文章链接是:year/:month/:day/:title/
,里面的汉字经过转义,导致了这样的结局。
永久链接
看一下永久链接(Permalinks)的解释,在站点的_config.yml
中,生成的文章链接默认为:
permalink: :year/:month/:day/:title/
permalink_defaults:
因为title可能为中文,那生成的链接就可能为上面的情况,这时候我们希望自己在每篇文章的Front-matter中指定一个字段,然后替换title,这样就可以显示我们自己定义的url了,例如:
permalink: :year/:month/:day/:urlname/
permalink: post/:urlname/
permalink: :year/:month/:day/:urlname/
# 当没有urlname时显示什么,写上 :title 也没有用,会作为字符串处理
permalink_defaults:
urlname: index
因为之前文章的形式是:year/:month/:day/:title/
,为了保留以前的文章阅读数,这里我使用第一种形式,然后在以前每篇文章的Front-matter中加上urlname,保持和以前的文章链接一致就可以了,例子:
---
title: 《Android群英传 神兵利器》读书笔记
urlname: 《Android群英传-神兵利器》读书笔记
date: 2018-02-04 23:16:31
tags:
- Android
- Books
- 工具
categories: Android
---
注意:标题上的空格,有时候转义为“%20”,有时候则为“-”。其他的特殊字符也要注意,不然和以前的文章就不是一个链接了!
为了每次hexo new “my new blog title”
时就有urlname字段,我们可以在scaffolds/post.md
里配上这个字段,例如:
---
title: {{ title }}
urlname:
date: {{ date }}
tags:
categories:
---
这样生成的链接形式就是这样了:https://jingbin.me/2018/06/06/set-hexo-permalink/
总结一下
修改站点文件
_config.yml
中的permalink:permalink: :year/:month/:day/:urlname/ permalink_defaults: urlname: index
在
scaffolds/post.md
里配上urlname字段:--- title: {{ title }} urlname: date: {{ date }} tags: categories: ---
之前遇到的问题
之前遇到的一个问题,折磨了几天,和这篇文章无关,现记录在这里:
用hexo d
命令部署的时候总是会卡住很久,只用hexo d -debug
查看日志发现信息一直在循环:
▶ hexo d -debug
INFO Start processing
INFO Files loaded in 620 ms
INFO Start processing
INFO Files loaded in 342 ms
...
INFO Start processing
INFO Files loaded in 274 ms
INFO 0 files generated in 381 ms
INFO Start processing
^C
Bye!
这里和另一个使用hexo的人情况一致,hexo deploy 命令卡住的奇怪问题,参考他的解决方法还是没有解决,估计每个人产生的原因可能不一致,最后删除db.json 文件
才好了。