跳转主页

Hugo博客永久链接

·1304 字·3 分钟
Blog
目录

简单开局

重新折腾了一下博客结构,发现了hugo里有个slug,这玩意支持为文章生成永久链接。速记一下。


随着博客内容愈来愈多,我会根据自己的偏好去调整content目录下的文章结构。按hugo的默认设置,一旦文章的目录结构变动,链接随即失效、无法访问;而使用slug后,可以给文章自定义永久链接,也可以有效避免中文title带来的链接超长观感 ~

参考文档:


配置文件路径根据博客主题不一,本博客使用BlowFish主题

基础用法

  1. 在设置中开启permalinks

    注:我主要使用posts/do-list/这两个文件夹存放内容,故都设置了一下

# config/_default/config.toml

# 永久链接,可按年月日自定义路径
[permalinks]
  posts = "/posts/:year/:slug"
  do-list = "/do-list/:slug"
  1. 每篇文章的 Front Matter 中填写slug,如下所示
---
title: "Hugo博客永久链接"
date: 2023-09-06T01:01:52+08:00
draft: false
tags: ["Blog"]
slug: blog-slug
---
正文内容

完成以上两步,推送更新后,即可生成文章的永久链接。比如这一篇,链接会是:

http://im.happytoo.cyou/do-list/blog-slug/

只要我不换域名,这个链接将一直有效。

进阶玩法

以下内容主要参考第二篇文档。

archetypes/下配置好默认的 Front Matter ,再使用hugo new <post's name>命令创建新文章,这样可以按默认配置自动生成。

  1. 配置默认Front Matter
# archetypes/default.md

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: false
slug: {{ substr (md5 (printf "%s%s" .Date (replace .TranslationBaseName "-" " " | title))) 4 8 }}
---

不太了解的内容去问了下ChatGPT:(后面想法子加个折叠块吧)

  • Q: 请帮我解释一下

  • A: 是 Hugo 博客中 Front Matter(前置元数据)字段的一部分,它用于生成文章的 slug(URL 友好的标识符)。让我详细解释这段代码:

    • slug::这是 Front Matter 中的字段,用于指定文章的 URL 路径的一部分,通常是短、友好的文本。

    • {{ … }}:这是 Hugo 模板语法,允许你在 Front Matter 中使用 Go 模板函数来生成或处理字段的值。

    • md5:这是一个哈希函数,用于生成字符串的 MD5 哈希值。MD5 哈希值通常用于将文本转换为唯一的、固定长度的字符串,以便用作标识符。

    • printf “%s%s” .Date (replace .TranslationBaseName “-” " " | title):这是一个复杂的表达式,用于构建一个字符串,该字符串将在后续的 MD5 哈希计算中使用。

    • 让我们分解它:

      • .Date:这是 Hugo 内置的变量,表示文章的发布日期。

      • replace .TranslationBaseName “-” " " | title:这一部分首先使用 replace 函数将文章的文件名中的破折号(-)替换为空格,然后使用 title 函数将字符串中的每个单词的首字母大写。这确保了标题的格式是适合用作 slug 的。

      • substr … 4 8:最后,使用 substr 函数来提取字符串的一部分,从第 4 个字符(0 索引)开始提取长度为 8 的子字符串。这个子字符串将成为文章的 slug。

  • 总的来说,上述模板代码的作用是生成一个文章的 slug,该 slug 基于文章的发布日期和标题,经过一系列的字符串操作和哈希处理,确保生成一个独一无二的标识符,以用作文章的 URL 路径。生成的 slug 将在 Hugo 构建过程中自动应用到文章中,以创建文章的 URL。这可以帮助确保文章的 URL 友好、唯一,并适用于 SEO。

  1. hugo new命令创建新文件

比如说我这篇文章在content/do-list/下创建,那么运行命令:

hugo new do-list/Hugo博客永久链接.md

成功生成,并且 Front Matter 为

---
title: Hugo博客永久链接"
date: 2023-09-06T01:01:52+08:00
draft: false
slug: 9a857896
---

以上,结束。



最后更新于: 2024 年 10 月 25 日