博客折腾笔记②:hexo 的优化

文章永久链接唯一化

为解决 hexo 默认设置下改变源文件名或使用中文标题带来的文章链接问题,这里使用 hexo-abbrlink 插件来解决问题

1
npm install hexo-abbrlink --save

然后更改博客配置文件_config.yml, 这里我改成

1
permalink: :posts/:year/:abbrlink/

还可以设置永久链接的生成算法,在博客配置文件中加入

1
2
3
abbrlink:
alg: crc32 # support crc16(default) and crc32
rep: hex # support dec(default) and hex

不同算法的生成效果:

1
2
3
4
5
6
7
8
crc16 & hex
https://post.zz173.com/posts/66c8.html
crc16 & dec
https://post.zz173.com/posts/65535.html
crc32 & hex
https://post.zz173.com/posts/8ddf18fb.html
crc32 & dec
https://post.zz173.com/posts/1690090958.html

一些知识补充:

百度蜘蛛抓取网页的规则:对于蜘蛛说网页权重越高、信用度越高抓取越频繁,例如网站的首页和内页。蜘蛛先抓取网站的首页,因为首页权重更高,并且大部分的链接都是指向首页。然后通过首页抓取网站的内页,并不是所有内页蜘蛛都会去抓取。

搜索引擎认为对于一般的中小型站点,3 层足够承受所有的内容了,所以蜘蛛经常抓取的内容是前三层,而超过三层的内容蜘蛛认为那些内容并不重要,所以不经常爬取。出于这个原因所以 permalink 后面跟着的最好不要超过 2 个斜杠。[^]

新设备上恢复博客备份的问题解决

sudo npm install 失败

解决方案:不要用 sudo, 直接 npm install 就好

hexo b 报错

在新装的 UTG 上恢复 Blog,最后执行 hexo b 的时候报错了

1
2
3
4
fatal: 'github' does not appear to be a git repository
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

翻了翻插件的 issuse,看到了相似的问题#20

参考里面的内容,修改博客配置文件里插件的相关配置,把 github 换成 origin

1
2
3
4
backup:
type: git
repository:
origin: git@github:bx_reader/bx-reader-api.git,master

这里顺便把 git 的 https 连接改成了 git 连接,这样就不用每次都输入账号密码了

再次尝试,问题解决

Hexo 文章加密

使用插件 hexo-blog-encrypt

安装

1
npm install --save hexo-blog-encrypt

使用

在文章信息头添加 password 字段

1
2
3
4
5
---
title: Hello World
date: 2016-03-30 21:18:02
password: mikemessi
---

也可以在文章信息头单独自定义密码输入交互信息

1
2
3
4
5
6
7
8
9
10
11
---
title: Hello World
tags:
- 作为日记加密
date: 2016-03-30 21:12:21
password: mikemessi
abstract: 有东西被加密了, 请输入密码查看.
message: 您好, 这里需要密码.
wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试.
wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.
---

进阶

全局配置

在站点根目录下的_config.yml 里可以添加以下内容进行全局配置

1
2
3
4
5
6
7
8
9
10
# Security
encrypt: # hexo-blog-encrypt
abstract: 有东西被加密了, 请输入密码查看.
message: 您好, 这里需要密码.
tags:
- {name: tagName, password: 密码A}
- {name: tagName, password: 密码B}
template: <div id="hexo-blog-encrypt" data-wpm="{{hbeWrongPassMessage}}" data-whm="{{hbeWrongHashMessage}}"><div class="hbe-input-container"><input type="password" id="hbePass" placeholder="{{hbeMessage}}" /><label>{{hbeMessage}}</label><div class="bottom-line"></div></div><script id="hbeData" type="hbeData" data-hmacdigest="{{hbeHmacDigest}}">{{hbeEncryptedData}}</script></div>
wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试.
wrong_hash_message: 抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.

配置优先级是

文章信息头 > _config.yml (站点根目录下的) > 默认配置