ํฐ์คํ ๋ฆฌ ๋ทฐ
vercel ๋ฐฐํฌ ์ค๋ฅ - ์๋ก๊ณ ์นจ 404: NON_FOUND
์ฑ._. 2025. 2. 9. 20:08๋ฌธ์ ์ํฉ
vercel์์ github๋ฅผ ์ฐ๋ํ์ฌ main ๋ธ๋์น์ ๋ด์ฉ์ ๋ฐฐํฌํ์๋ค.
๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์๋ํ์ง๋ง ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ์ 404 ์๋ฌ๊ฐ ๋ด๋ค.

์ค๋ฅ ํด๊ฒฐ ์๋
๐์๋ 1 : route path="/*" ์ค์
Home, Dex, Detail ๋ฃจํธ ์ธ์๋ ๊ทธ ์ธ ๋ค๋ฅด๊ฒ ์ ๋ ฅ๋๋ ๋ชจ๋ ์ฃผ์์ ์ ๊ทผ์ "/*" ๋ก ์ฒ๋ฆฌํด์ฃผ์๋ค.
path="/*" (์ ์๋์ง ์์ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ) element={<Home />} /> (Home ์ปดํฌ๋ํธ๋ก ๋์๊ฐ๋๋ก ์ฒ๋ฆฌ)
1๏ธโฃ path="/*"
- path="/*"๋ **๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํฌํจํ๋ "์์ผ๋์นด๋(Wildcard) ๊ฒฝ๋ก"**๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ์ ์๋์ง ์์ ๊ฒฝ๋ก(404 ํ์ด์ง) ๋๋ ๋ชจ๋ ํ์ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ฃผ๋ก 404 Not Found ํ์ด์ง๋ ํน์ ํจํด์ ๊ฐ์ง ํ์ด์ง์ ํ์ ๋ผ์ฐํธ ์ฒ๋ฆฌ์ ํ์ฉ๋๋ค.
2๏ธโฃ ํน์ ๊ฒฝ๋ก ํ์์์๋ง /* ์ฌ์ฉ ์
- ํ์ ๊ฒฝ๋ก์์์ 404 ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
- <Route path="/dashboard/*" element={<NotFound />} /> ๐๐ป ๋์๋ณด๋ ๋ด๋ถ 404 ์ฒ๋ฆฌ
- /dashboard/other-page (์ ์๋์ง ์์ ๊ฒฝ๋ก) ๐๐ปNotFound ์ปดํฌ๋ํธ
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/dex" element={<Dex />} />
<Route path="/detail" element={<Detail />} />
<Route path="/*" element={<Home />} />
</Routes>
</BrowserRouter>
);
};
๐์๋ 2 : element์ import ํ์ธ
path์ ์ฐ๊ฒฐ๋ element ํ์ด์ง๋ฅผ ์ดํด๋ณด๊ณ ์ฌ์ฉํ์ง ์๋ import๋ฅผ ์ ๋ฆฌํ๋ค.
์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
๐vercel.json ์ผ๋ก ํ๋ก์ ํธ ๊ตฌ์ฑํ๊ธฐ
๊ตฌ๊ธ๋ง์ ํตํด ์๊ฒ ๋ vercel.json ์ผ๋ก ํ๋ก์ ํธ ๊ตฌ์ฑํ๊ธฐ

https://vercel.com/docs/projects/project-configuration#buildcommand
์ฌ์ดํธ ๋ด์๋ ๋ค์ํ json ํ์ผ ์ฌ์ฉ๋ฐฉ๋ฒ์ด ์๋ค.
๊ทธ ์ค rewrites ๋ฅผ ์ดํด๋ณด๋ฉด

source์ ๊ฒฝ๋ก๋ฅผ destination์ ๊ฒฝ๋ก๋ก ๋ค์ ์์ฑํด์ฃผ๋ ๋ฏํ๋ค.
์ด ์ค๋ฅ์ ์์ธ์ Vercel์ ์ ์ ํ์ผ ์๋น์ค ๋ฐฉ์ ๋๋ฌธ์ธ๋ฐ ์์ธํ ๋ด์ฉ์ ์๋ ์ ์ ๊ธ์ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๋ฏ ํ๋ค.
๋ฌธ์ ์์ธ: Vercel์ ์ ์ ํ์ผ ์๋น์ค ๋ฐฉ์
๐ React Router๋ "ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ผ์ฐํ
(Client-Side Routing)"์ ์ฌ์ฉ
๐ ํ์ง๋ง Vercel์ "์ ์ ํ์ผ ๊ธฐ๋ฐ์ ์๋ฒ ๋ผ์ฐํ
(Server-Side Routing)"์ ์ฌ์ฉ
๐ /about ํ์ด์ง์์ ์๋ก๊ณ ์นจํ๋ฉด, Vercel์ /about/index.html์ ์ฐพ์ง๋ง, ์กด์ฌํ์ง ์์ผ๋ฏ๋ก 404 ์ค๋ฅ ๋ฐ์
โ ์ฆ, React Router๋ index.html ํ๋๋ก ๋ชจ๋ ๋ผ์ฐํธ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ, Vercel์ ์ด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ก๊ณ ์นจ ์ 404 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๐์๋ฌดํผ ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- src์ ๋์ผํ ์ ์์์ vercel.json ํ์ผ ์์ฑ
- ํ์ผ ๋ด์ ์๋ ๋ก์ง ์์ฑ (Vercel์ด ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ index.html๋ก ๋ฆฌ๋๋ ํธํ๋๋ก ์ค์ )
- "/(.*)" → ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์๋ฏธ (์ ๊ท์)
- destination: "/index.html" → ์์ฒญ๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ index.html๋ก ๋ฆฌ๋๋ ํธ
- add, commit, push, PR์ ํตํด ๋ฐฐํฌ ์ฌ์ดํธ์ ์ ์ฉ
{
"rewrites": [
{ "source": "/(.*)", "destination": "/index.html" }
]
}
์ฐธ๊ณ ์๋ฃ :
'Forntend > Trouble Shooting' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [LoL info App] 0313 ํธ๋ฌ๋ธ์ํ (0) | 2025.03.17 |
|---|---|
| [/\/] fetch ์ต์ ์ ํ์์ฑ (0) | 2025.03.13 |
| [Pokemon PJ_Day 3]Dynamic Route์ QueryString (0) | 2025.02.06 |
| [Pokemon PJ_Day 2] ์กฐ๊ฑด๋ถ ์คํ์ผ๋ง, Array.from, ์ด๋ฒคํธ ๋ฒ๋ธ๋ง ๋ฐฉ์ง (0) | 2025.02.05 |
| [movie PJ_day2] DOM์ ํ์ฉํ ๋ฐ๋๋ผ ์ฝ๋ฉ๐ฆ (0) | 2025.01.24 |