Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

유리의 개발새발

[Next] 04. Page Router 라우팅 규칙 본문

Next

[Next] 04. Page Router 라우팅 규칙

yuri_ 2025. 7. 29. 13:19
반응형

 

Next.js에서 pages/ 폴더는 곧 URL 경로입니다.
파일명이나 폴더명에 따라 자동으로 라우팅이 구성되고, 동적 페이지도 파일명만으로 쉽게 만들 수 있습니다.
여기선 Page Router 기준으로 동작 방식을 정리합니다. (⚠️ App Router 아님)

pages/
  index.tsx        →  /
  about.tsx        →  /about
  contact.tsx      →  /contact
  blog/index.tsx   →  /blog
  blog/post.tsx    →  /blog/post

폴더/파일 구조 = URL 구조
React 컴포넌트를 해당 위치에 넣으면 자동으로 라우팅됩니다.

 

🔁 동적 라우팅 (Dynamic Routes)

[] — 단일 동적 세그먼트

pages/
  post/
    [id].tsx     →  /post/1, /post/hello
// post/[id].tsx
import { useRouter } from "next/router";

export default function Post() {
  const { id } = useRouter().query;
  return <h1>Post ID: {id}</h1>;
}

 

[...param] — Catch-all (모든 경로를 배열로 수집)

pages/
  docs/
    [...slug].tsx    →  /docs/a, /docs/a/b/c
// docs/[...slug].tsx
import { useRouter } from "next/router";

export default function Docs() {
  const { slug } = useRouter().query;
  return <p>{JSON.stringify(slug)}</p>;  // ["a", "b", "c"]
}

 

[[...param]] — Optional Catch-all (경로 없어도 됨)

pages/
  help/
    [[...slug]].tsx   →  /help, /help/a/b
// help/[[...slug]].tsx
import { useRouter } from "next/router";

export default function Help() {
  const { slug } = useRouter().query;
  return <p>{slug ? slug.join(" > ") : "Help 메인 페이지"}</p>;
}

 

index.tsx pages/index.tsx /
about.tsx pages/about.tsx /about
[id].tsx pages/post/[id].tsx /post/123
[...slug].tsx pages/docs/[...slug].tsx /docs/a/b/c
[[...slug]].tsx pages/help/[[...slug]].tsx /help, /help/a/b
_app.tsx pages/_app.tsx 전역 App 설정
_document.tsx pages/_document.tsx HTML 문서 커스터마이징
(group) ❌ Page Router에서 사용 금지  

 

반응형

'Next' 카테고리의 다른 글

[Next] 06. Pre-fetching  (0) 2025.07.29
[Next] 05. Next Navigation  (0) 2025.07.29
[Next] 03. page router  (1) 2025.07.28
[Next] 02. Next router  (0) 2025.07.28
[Next] 01. Next.js란?  (0) 2025.07.28