背景
hexo默认的链接是http://example.com/2013/07/14/path/hello-world/
这种类型的,这源于站点目录下的配置_config.yml
里的配置: permalink: :year/:month/:day/:title/
.
这种默认配置的缺点 - 文件名是中文,导致url链接里有中文出现 - 年月日都会有分隔符,目录层次较深 - 后台路径path
变化,会导致链接批量变化。非常影响SEO
Hexo 默认配置
https://hexo.io/zh-cn/docs/permalinks.html
_config.yml
permalink: :year/:month/:day/:title/
Hexo实现permalink的源码
https://github.com/hexojs/hexo/search?utf8=%E2%9C%93&q=permalink&type=
1 | // https://github.com/hexojs/hexo/blob/master/lib/plugins/filter/post_permalink.js |
hexo-abbrlink插件 源码
原理: - 注册before_post_render钩子, - 取出来abbrlink这个属性看是否存在,存在的就不管了, - 否则就生成连接 - 新链接写入post源文件。
入口:
1 | var hexo = hexo || {}; |
https://github.com/rozbo/hexo-abbrlink/blob/master/lib/logic.js
1 | var crc16 = require('./crc16'); |
TODO:
- 提供hash配置。比如采用date、path做hash
- 一般用不到,我觉得
- 不局限hex,可以采用所有数字+字母。容量更大。
- link写入到了.md文件中
- 优势:1. hexo读取方便 2. link复用,减少link的变动,利于SEO 3. 加速,不用每次重新hash
- 缺陷:需要重写md文件,强行插入abbrlink属性。
- 建议:与hexo动态交互,而不是把link写入到md静态文件。link的复用可以采用独立的数据文件