깊은 URL은 서버가 열고, React Router가 해석한다

직접 진입 요청은 먼저 정적 호스팅을 통과한다. 서버가 앱 셸을 돌려준 뒤에야 브라우저의 라우터가 원래 경로를 읽을 수 있다.

BROWSER 원래 경로 요청

GET /dashboard/settings

주소창의 pathname은 그대로 유지
HOST / CDN 실제 파일인지 판별

요청 경로와 배포 산출물을 먼저 대조한다.

파일 있음 → 그대로 응답
파일 없음 → SPA fallback
FALLBACK 앱 셸 반환

index.html을 200 응답으로 보내 브라우저 실행을 시작한다.

rewrite는 URL을 바꾸는 redirect가 아님
REACT ROUTER 원래 경로 매칭

JS가 실행되면 라우터가 location.pathname을 읽고 화면을 선택한다.

DashboardLayout + Settings
서버 책임

정적 파일 선택 · 없는 앱 경로를 index.html로 rewrite

브라우저 책임

번들 실행 · 현재 pathname에 대응하는 React 화면 렌더링

경계가 끊기면 호스팅이 먼저 404를 확정하므로 React Router는 실행될 기회조차 얻지 못한다.