Hexo修改默认文章URL的几种方式

星隐

在使用 Hexo 搭建博客时,文章的 URL 默认是根据日期与文件名生成的,例如:

1
permalink: :year/:month/:day/:title/

生成的 URL 一般类似于:

1
https://www.starin.top/2025/07/15/beanstalkd/

这种结构虽然直观,但容易出现两个问题:

  1. URL 包含中文标题时,浏览器可能会因为字符集差异导致乱码或失效。
  2. URL 中的日期信息会让链接显得冗长,不利于 SEO 优化与后期迁移。

因此,建议根据实际需求修改默认配置。


Hexo 的 _config.yml 文件中提供了一个 permalink 选项,用于定义生成文章链接的规则。

默认配置如下:

1
permalink: :year/:month/:day/:title/

其中,:title 对应 source/_posts 下文章的文件名。
如果文件名含有中文,就可能导致 URL 编码问题,特别是在不同浏览器中会出现兼容性差异。


二、推荐的几种 URL 定制方案

方案一:自定义 ID 生成 URL

我们可以通过自定义文章的 id 来替代默认的 title
修改 _config.yml

1
permalink: :year/:month/:day/:id/

接着,在每篇文章的 Front-matter 中添加 id 字段:

1
2
3
4
5
6
7
8
9
---
title: 测试
date: 2025-08-14 13:54:28
categories: 类别1
id: blog1
tags:
- Python
- Shell
---

生成的 URL 示例:

1
https://www.starin.top/2025/08/14/blog1/

这种方式可完全避免中文乱码,同时便于自定义短链或唯一标识符。


方案二:使用 Hash 值自动生成链接

如果不想每次手动指定 id,可以直接使用 Hexo 生成的 hash 值。
修改 _config.yml

1
permalink: :year/:month/:day/:hash/

hash 是根据文件名和日期自动生成的 SHA1 哈希值,具有唯一性且不会引起编码问题。

生成后的 URL 例如:

1
https://www.starin.top/2025/08/14/a1c9d8acb9bca455ea3e81afce35e5/

方案三:去除日期,仅保留文章名

如果你的博客不依赖日期结构,也可以简化为仅保留文章标题:

1
permalink: :title/

这样,原本
https://www.starin.top/2022/07/15/beanstalkd/
会变成
https://www.starin.top/beanstalkd/

更简洁,也更有利于 SEO。


方案四:自定义字段生成 URL

你也可以在 Front-matter 中自定义一个字段,例如 my,并在配置中引用:

1
permalink: :my/

文章头部示例:

1
2
3
4
5
---
title: beanstalkd
date: 2022-07-15 20:00
my: 22d5a1e8e685
---

生成的链接为:

1
https://www.starin.top/22d5a1e8e685/

这种方式适合需要自定义唯一标识或使用短链的场景。


三、Hexo 支持的 URL 变量汇总

变量 描述
:year 文章发表年份(4 位)
:month 文章发表月份(2 位)
:i_month 去掉前导零的月份
:day 文章发表日期(2 位)
:i_day 去掉前导零的日期
:hour 发表小时(2 位)
:minute 发表分钟(2 位)
:second 发表秒数(2 位)
:title 文件名(相对于 source/_posts
:name 文件名
:post_title 文章标题
:id 文章 ID(缓存重置后可能改变)
:category 分类,若无分类则使用默认分类
:hash 文件名和日期生成的 SHA1 哈希(12 位)

总结

针对不同的使用需求,可以选择合适的方式修改 Hexo 的 permalink

  • ✅ 简洁 URL::title/
  • ✅ 唯一短链::id/:hash/
  • ✅ 自定义控制::my/

灵活地调整 URL 结构,不仅可以避免中文乱码问题,还能让博客链接更稳定、美观、有利于 SEO。

  • 标题: Hexo修改默认文章URL的几种方式
  • 作者: 星隐
  • 创建于 : 2025-10-30 21:35:35
  • 更新于 : 2026-01-19 01:58:27
  • 链接: https://www.starin.top/post/57dc08ca76b3/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。