Hugo Markdown 文件的 Front Matter slugurl 有什么不同,作用是什么,如何使用?

title: 'Hugo PaperMod - Slug和URL'
date: ''
slug: ''
url: 'hugo-papermod/slug-and-url'
showToc: true
TocOpen: true
enableCopyright: true
comments: true
weight: null
draft: false
enableDonate: true

slug

slug 是用于生成 URL 片段的字段,它会影响文章的最终路径,但不会改变整个 URL 结构

如果 title 过长或包含特殊字符,可以用 slug 来简化 URL

默认情况下,Hugo 会使用 title 的 小写、短横线分隔 形式作为 slug

例如:

content/posts 路径下新建 my-first-post.md 文章,然后文章 Front Matter 中的 slug 如下


title: "My First Hugo Post"
slug: "my-first-post"

URL 效果:

http://example.com/posts/my-first-post/

url

url 允许完全自定义文章的访问路径,并且可以脱离 Hugo 默认的路径规则

如果指定了 url,Hugo 不会使用 slugtitle 生成 URL,而是直接采用 url 字段的值


title: "My First Hugo Post"
url: "/custom-path/my-special-post/"

URL 效果:

http://example.com/custom-path/my-special-post/

所以说,url 可以完全控制文章的路径,不受 slug 影响

示例对比

假设有 content/posts/my-post.md,不同 slug 和 url 配置的影响如下

title: "My Hugo Guide"
slug: "hugo-guide"
url: "/docs/hugo-guide.html"
Hugo 配置生成的 URL
默认/posts/my-hugo-guide/
slug: “hugo-guide”/posts/hugo-guide/
url: “/docs/hugo-guide.html”/docs/hugo-guide.html

区别(总结)

/slugurl
作用影响 URL 片段直接指定完整路径
依赖默认结构
适用场景让 URL 更简洁自定义完整路径
例子slug: “short-title” → /posts/short-title/url: “/custom/path.html” → /custom/path.html

slug 和 url 的使用建议

  • 适合用 slug 的情况

    • 让 URL 结构简洁、可读(避免长标题转化为 URL)
    • 仍然希望保持 Hugo 默认的 URL 结构(如 /posts/)
  • 适合用 url 的情况

    • 需要完全自定义 URL 路径,例如:
    • 迁移旧博客,需要保持 URL 结构一致。(这是我关心的,所以一直使用 url)
    • SEO 需求,需要特定路径
    • 文章路径不符合 Hugo 默认规则