发布于 

Hexo 文章永久链接设置

  在使用Hexo写博客时,使用中文博客标题生成的永久链接是冗长且无意义的,这不利于进行SEO,且不易读。一个好的永久链接应该体现文章内容,本文介绍在Hexo中如何自定义永久链接。

永久链接介绍

  永久链接是什么, Hexo官方介绍

维基百科的定义

固定链接PermaLinkPermanent Link的缩写)或称“永久链接”或“静态链接”,意指向一个特定网络日志WebLogBlog)的永久固定标识符。一般情况下,固定链接指向的均为一个网络日志条目(Entry)的独立网页。默认存档设置包含基于数据库的存档和单独文件存档。默认情况下,固定链接被设置为链接到一个条目的单独存档页面中。你可以在网络日志的下方,或者在“发布时间”之后,看到 Permalink。点击 Permalink 将会把访问者导向到专属于该条目 (Entry) 的独立网页中,一般包含“添加评论”等功能。

如果可能的话,一般的静态链接会尽量使得网址本身是有意义(人类可读)的,例如网址本身就含有该篇博客的标题。然而由于Unicode在网址需要特殊编码,因此非英文的语言比较难做到这点。

最初作用

永久链接最初主要是为了做搜索引擎优化(SEO),因为搜索引擎的机器人对静态的URL有偏好,所以对于动态生成的页面,人们想出了这么个办法来使其假扮成一个静态的页面,以便让搜索引擎更好的索引网站内容;另外一个初衷是增加URL地址的可读性。

  简单来讲,永久链接是网页的完整网址 (url) ,这个网址永远不会改变的。一般而言,希望这个网址是有意义的 (人类可读),例如网址中含有的博客标题。但是使用非英文语言作为标题会导致生成的永久链接是不可读的冗长的编码内容。Hexo默认使用博客文章标题作为永久链接,这就需要我们重新定义永久链接中的非英文语言部分。

基本设置

设置步骤:

  1. 修改博客根目录中站点设置文件 _config.yml
  2. 修改发布文章模板 ...\scaffolds\post.md

修改博客根目录中站点设置文件

1
2
3
4
5
6
7
8
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://hermitlsr.top
permalink:year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks

Hexo默认的永久链接格式是:permalink:year/:month/:day/:title/

例如本篇文章如果按照原始格式,其永久链接将是:https://hermitlsr.top/2021/06/22/Hexo%20%E6%96%87%E7%AB%A0%E6%B0%B8%E4%B9%85%E9%93%BE%E6%8E%A5%E8%AE%BE%E7%BD%AE/

将在浏览器地址中显示: https://hermitlsr.top/2021/06/22/Hexo%20文章永久链接设置/

  事实上如若复制浏览器中的地址得到的还是上面冗长的编码的,浏览器地址中的显示是编码过的。另外,默认格式中的日期格式是递进的关系,可以根据自己的需求进行设定删减,我减少了一些中间层次,直接设置为 /2021-06-22/

1
2
3
4
5
6
7
8
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://hermitlsr.top
permalink: :year-:month-:day/:urlname/ # :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks

  将永久链接的格式设置为:permalink: :year-:month-:day/:urlname/ ,其中 urlname 是自定义的文章地址,可以和文章标题不一致。可自由设置,这里采用的方式是使用文章标题拼音首字母代替原有的部分。

修改发布文章模板

  前面提到的 urlname 需要设置在文章开头的 front-matter 中,在 Volantis 主题中的详情参数可见 Volantis front-matter,如:

1
2
3
4
5
6
7
---
title: Hexo 文章永久链接设置
mathjax: true
urlname: Hexo-wzyjljsz
date: 2021-06-22 23:51:12
tags:
---

  这里将 urlname 设置为 Hexo-wzyjljsz ,此时的永久链接就变成了:https://hermitlsr.top/2021-06-22/Hexo-wzyjljsz/ ,非常清爽明了。

  自定义永久链接的设置在这里基本完成了。如果不想每次写博文时都要再输入一遍 urlname: 需要修改发布文章的模板 (post),对于草稿 (draft) 可一样处理。

在站点文件中找到 ...\scaffolds\post.md 文件,在其中设置:

1
2
3
4
5
6
7
8
9
10
11
12
---
title: {{ title }}
date: {{ date }}
urlname:
mathjax: true
cover: true
comments: false
thumbnail: true
headimg:
tags:
categories:
---

因为文章基本都要进行公式渲染,所以还在这里设置了 mathjax: true ,具体需要设置的内容可根据自身需求而定。

更多修改

使用 hexo new post " " 新建文章的时候,默认文章命名不方便日后的文章查找整理,这里一并进行设置,最后的格式是这样的:2021-06-22--Hexo 文章永久链接设置.md ,加上文章前缀之后更便于管理。

这里只需要设置博客根目录站点设置文件 _config.ymlnew_post_name 即可:

1
2
3
new_post_name: :year-:month-:day--:title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase

目前我已弃用这个方法,改为使用插件 hexo-abbrlink

首先安装插件:

然后设置 _config.yml

_config.yml
1
2
3
4
5
6
7
8
# URL
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
url: https://www.hermitlsr.top
root: /
permalink: :year-:month-:day/:abbrlink.html #permalink: :year-:month-:day-:title/
abbrlink:
alg: crc32 #算法: crc16(default) and crc32
rep: hex #进制: dec(default) and hex

再次弃用什么也不做

现在我已经弃用了上面的所有方法,恢复成原来的样子无所谓嘞