31 lines
4.4 KiB
Markdown
31 lines
4.4 KiB
Markdown
# [[React Router URL Configuration]]
|
|
|
|
## 📌 Brief Summary
|
|
React Router URL Configuration은 React 애플리케이션에서 URL을 특정 UI 컴포넌트 및 동작에 매핑하고 관리하는 설정 방식을 의미합니다 [1, 2]. 이는 부모-자식 간의 중첩 라우트(Nested Routes) 구조를 정의하고, 동적 URL 세그먼트를 처리하며, 검색 엔진 최적화(SEO)에 적합한 클라이언트 사이드 라우팅 환경을 구현하는 데 필수적입니다 [1, 3, 4]. 올바른 URL 구성을 통해 복잡한 애플리케이션 레이아웃을 효과적으로 유지 관리하고, 사용자 탐색 및 상태 동기화 경험을 최적화할 수 있습니다 [5, 6].
|
|
|
|
## 📖 Core Content
|
|
* **중첩 라우팅 및 URL 계층 구조 (Nested Routes):**
|
|
React Router를 사용하면 URL에 따라 페이지의 공통 부분(예: 사이드바, 헤더)은 고정된 상태에서 자식 요소만 변경되는 부모-자식 관계의 레이아웃을 구축할 수 있습니다 [1]. 예를 들어, `/dashboard` URL이 부모 레이아웃을 제공하고, `/dashboard/analytics`와 같이 중첩된 URL에 접근 시 `<Outlet />` 컴포넌트를 통해 하위 컴포넌트를 렌더링하도록 구성합니다 [2].
|
|
|
|
* **동적 세그먼트 및 404 에러 처리:**
|
|
`/:userId`와 같이 URL 내에 동적인 파라미터를 포함하도록 구성할 수 있으며, 이러한 값은 `useParams()` 훅을 통해 쉽게 가져올 수 있습니다 [5, 7]. 또한, 각 라우트 레벨에서 `*` 경로(Catch-all)를 구성하여 예상치 못한 URL 접근 시 전역 404 페이지나 특정 섹션별 Not Found 페이지로 유연하게 처리할 수 있습니다 [5, 7, 8].
|
|
|
|
* **데이터 형태의 라우트 구성 (Route Configuration as Data):**
|
|
대규모 애플리케이션의 URL 구성 관리를 위해, JSX 트리가 아닌 JavaScript 객체 배열 형태로 라우트를 정의하고 `useRoutes()` 훅을 사용할 수 있습니다 [5, 7, 8]. 이는 경로 구성을 선언적 데이터로 취급하여 유지보수성과 확장성을 크게 향상시킵니다 [5, 7].
|
|
|
|
* **SEO 친화적인 URL 구성 (HTML5 History API):**
|
|
검색 엔진 최적화를 위해서는 `example.com/#/about`과 같은 해시 라우팅(Hash Routing) 방식을 피해야 합니다 [3, 4]. 해시 기반 URL은 검색 엔진이 개별 페이지로 인식하지 않아 크롤링에 실패하게 됩니다 [3, 4, 9]. 대신 `BrowserRouter`를 통한 클린 URL(`example.com/about`)을 사용하여 모든 라우트가 개별적으로 인덱싱될 수 있도록 구성하는 것이 필수적입니다 [3, 4, 9].
|
|
|
|
* **클라이언트 사이드 라우팅을 위한 서버 설정:**
|
|
`BrowserRouter` 기반으로 URL을 구성할 경우, 사용자가 특정 URL을 직접 입력해 접속했을 때 서버에서 404 에러를 반환하지 않도록 해야 합니다 [3]. 이를 위해 Nginx, Express, Apache 등의 백엔드 서버는 모든 라우팅 요청에 대해 단일 진입점인 `index.html`을 반환하도록 구성되어야 합니다 [3].
|
|
|
|
* **URL을 활용한 상태 관리 (URL Search Params):**
|
|
React Router 환경에서는 임시 UI 상태(예: 리스트 뷰 vs 디테일 뷰 전환)를 독립적인 React 컴포넌트 상태(State)로 관리하기보다는 URL의 Query 파라미터를 이용해 관리하는 것이 권장됩니다 [6, 10]. 이 구성을 통해 불필요한 상태 동기화 버그를 방지하고 URL 자체를 신뢰할 수 있는 단일 출처(Source of truth)로 삼을 수 있습니다 [6, 11].
|
|
|
|
## 🔗 Knowledge Connections
|
|
- **Related Topics:** [[Single Page Applications (SPA)]], [[Nested Routing]], [[Client-Side Routing]], [[Search Engine Optimization (SEO)]], [[Server-Side Rendering (SSR)]], [[Core Web Vitals]]
|
|
- **Projects/Contexts:** [[복잡한 계층형 대시보드 및 SaaS 플랫폼 UI 네비게이션 설계]], [[SPA 기반 React 웹사이트의 기술적 SEO 개선 및 SSR 마이그레이션 전략]]
|
|
- **Contradictions/Notes:** 해시 라우팅(`HashRouter`)은 서버에 클라이언트 사이드 라우팅을 위한 추가적인 `index.html` 반환 설정을 할 필요가 없어 초기 배포 구성이 간편하다는 장점이 있습니다. 그러나 이는 URL이 제대로 크롤링되지 않아 검색 엔진 랭킹에 치명적인 악영향을 미치므로, SEO가 중요한 현대의 웹 프로덕션 환경에서는 강하게 지양됩니다 [3, 4, 12].
|
|
|
|
---
|
|
*Last updated: 2026-04-26* |