slug(スラッグ)は、各ページの URL パスになる識別子です。cosense-site-kit は Cosense のページタイトルやタグから slug を決め、最終的な URL を組み立てます。

URL の組み立て

  • URL は site.baseUrl + site.base + / + slug + / になります。
https://USER.github.io + /repo + / + collection + /
= https://USER.github.io/repo/collection/

slug の決め方

  • cosense.config.ts の routing.slug で戦略を選びます(既定は metadata-or-encoded-title)。
routing: {
  slug: "metadata-or-encoded-title",
},
[** title]
 ページタイトルをそのまま slug にします。空白は URL 上で %20 になります。
[** encoded-title]
 タイトルの空白を _ に置換します(例: Collection template → Collection_template)。
[** metadata-or-encoded-title(既定)]
 本文に `#slug/◯◯` タグがあればその値を、無ければ encoded-title と同じものを使います。

[* #slug/◯◯ で URL を明示する]

  • 本文に #slug/collection のように書くと slug を固定できます。値は ASCII 化されます(小文字化/a-z 0-9 - _ / 以外は - に/前後と連続の - を整理)。
    • #slug/My Page → my-page
    • #slug/docs/intro → docs/intro(/ は残るのでパスをネストできる)
  • 例: タイトル「Collection template」に #slug/collection を付けると URL は /collection になります(タグが無ければ /Collection_template)。

自動で行われる調整

  • slug が重複した場合、2つ目以降に -2, -3 … が付きます(先頭のページが素の slug を保持)
  • 各セグメント先頭の . は除去されます(GitHub Pages 等が /.foo を 404 にするため。.site のようなページが対象)

リンクと slug 変更

  • Cosense で [ページタイトル] と書く内部リンクは、リンク先の slug に自動解決されます。slug を変えてもサイト内リンクは壊れません。
  • 公開後に slug を変えると外部からのリンクは切れます。その場合は .site page の redirects(旧 slug → 新 slug)で転送できます。
  • 公開前の点検は Doctor(slug 重複・リンク切れなどを検出)。

関連

#slug/slugs