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 重複・リンク切れなどを検出)。
関連