前言

因为最近换了提供商, 加上在RainCloud家白嫖了50,想着顺便测试,就迁移到了这边
但是这边的虚空离奇抽风,但本着懒折腾的想法,就重新编译了份静态并上传
起初体验良好,但是一旦进入中文URL,就会404 (,也就有了这个笔记

为什么使用英文网址?

一般来说,URL只能使用英文和数字和一些标点符号表示。这是因为网络标准RFC 1738 做了硬性规定。

虽然在Hexo中引用:title可以显示中文的网址,但是复制粘贴到记事本会发现得到的是一大串百分号之类的“乱码”(其实这并不是乱码,而是中文被转码成十六进制编码的结果),看起来不怎么好看:

因此下面我们通过一种简单的方式使发布的文章的网址变得简洁:

如图所示我只用了十位数字作为文章的唯一标识,你也可以自定义此数字:

在permalink中使用文章id替代“:title”

在官方文档永久链接(Permalinks) | Hexo一章中有这样一段描述:

permalink的变量就这几个,其中文章id这个变量非常有用。

我们可以在博客根目录的配置文件(_config.yml)中这样修改:

1
2
#permalink: :year/:month/:day/:title # 这是原配置
permalink: :year/:id/ # 替换为此新配置

并且在.\scaffolds\post.md中修改为:

(注意新增了一个id:)

1
2
3
4
title: {{ title }}
id:
date: {{ date }}
tags:

在我们的具体文章中,你可以使用任意字符串作为此文章的id,例如:

1
2
3
4
title: 如何让你的Hexo博客网址使用全英文路径
id: 123456789-abcd
date: 2021-03-20 19:01:32
tags:

不过为了命名规范(同时也是为了方便记忆),我建议使用创建日期中的月+日+时+分+秒来定义一个id,但是此篇文章我使用tag作为id(懒)。

使用category_map实现分组映射

有同学也注意到了,官方文档中还提到permalink可以使用:category变量,比如我们想要这样定义永久链接:

修改博客配置文件_config.yml:

1
2
3
4
5
6
7
8
9
10
11
permalink: :year/:category/:id/

...

# Category & Tag
default_category: uncatalog
## 为了让中文分组名在网址中显示为英文,我们可以创建分组名映射(category_map):
category_map:
Hexo: hexo
Web: web
tag_map:

同理tag_map可以实现标签的中英文转换。