catch-all 판단 기준

URL 깊이와 루트 매칭 여부로 세그먼트 선택

`[...slug]`와 `[[...slug]]`는 모두 여러 path 조각을 배열로 받지만, 기준 경로 자체를 허용하는지에서 설계가 갈립니다.

필수 Catch-all

[...slug]

문서 상세처럼 반드시 하위 경로가 있어야 할 때 사용합니다. `/docs`는 매칭하지 않고 `/docs/a`부터 처리합니다.

404

/docs

slug가 없어 매칭되지 않습니다.

1

/docs/api

["api"]로 전달됩니다.

n

/docs/a/b

["a", "b"]가 됩니다.

선택적 Catch-all

[[...slug]]

목록 홈과 상세 문서를 같은 route에서 다룰 때 사용합니다. `/docs`와 깊은 문서 경로를 하나의 page가 분기합니다.

0

/docs

undefined 또는 빈 배열로 취급합니다.

1

/docs/api

["api"]로 전달됩니다.

n

/docs/a/b

같은 배열 처리 로직을 재사용합니다.

홈 필요

기준 경로가 화면이면 optional

문서 홈, 카테고리 홈처럼 하위 path 없이도 보여줄 콘텐츠가 있으면 `[[...slug]]`가 자연스럽습니다.

상세 전용

항상 식별자가 필요하면 required

실제 콘텐츠를 찾기 위해 path 조각이 꼭 필요하다면 `[...slug]`로 잘못된 루트 접근을 명확히 막습니다.

분기 코드

undefined 처리를 먼저 둔다

optional 패턴에서는 slug가 없을 때의 홈 화면, 기본 데이터, 빈 상태를 page 안에서 분리합니다.