# [[SEO for Single Page Applications]] ## ๐Ÿ“Œ Brief Summary SPA(Single Page Application)๋Š” ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ์ธก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(CSR)๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์›น ์•„ํ‚คํ…์ฒ˜์ด๋‹ค [1, 2]. ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰ ์—”์ง„๊ณผ AI ํฌ๋กค๋Ÿฌ๊ฐ€ ์ดˆ๊ธฐ ์ ‘์† ์‹œ ๋นˆ HTML ์…ธ์„ ๋จผ์ € ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜์–ด ์ฝ˜ํ…์ธ  ์ƒ‰์ธ๊ณผ ์ธ์‹์— ํฐ ์–ด๋ ค์›€์„ ๊ฒช๋Š”๋‹ค [3, 4]. ๋”ฐ๋ผ์„œ SPA๋ฅผ ์œ„ํ•œ SEO๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR), ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG), ๋™์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋“ฑ์„ ๋„์ž…ํ•˜์—ฌ ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ์ฝ๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ‰์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”ํ•˜๋Š” ํ•„์ˆ˜์ ์ธ ๊ณผ์ •์ด๋‹ค [5-8]. ## ๐Ÿ“– Core Content **SPA์˜ SEO ์ฃผ์š” ํ•œ๊ณ„์ ** * **ํฌ๋กค๋ง ๋ฐ ์ƒ‰์ธ ์ง€์—ฐ:** ๊ธฐ๋ณธ์ ์œผ๋กœ SPA๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง(CSR)์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ๋น„์–ด ์žˆ๋Š” HTML ๋ผˆ๋Œ€๋งŒ์„ ์ œ๊ณตํ•œ๋‹ค [1, 3]. ๊ตฌ๊ธ€๋ด‡์˜ 2๋‹จ๊ณ„ ์ƒ‰์ธ(Two-wave indexing) ๊ณผ์ •์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์ง€์—ฐ๋˜๊ฑฐ๋‚˜ ๋ Œ๋”๋ง ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฝ˜ํ…์ธ ๊ฐ€ ์•„์˜ˆ ์ƒ‰์ธ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋‹ค [4, 9, 10]. * **AI ์—์ด์ „ํŠธ์˜ ๊ฐ€์‹œ์„ฑ ๋ถ€์กฑ:** 2026๋…„ ๊ธฐ์ค€ GPT-4๋‚˜ Claude ๋“ฑ AI ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ํฌ๋กค๋Ÿฌ(GPTBot ๋“ฑ)๋Š” ๋น„์šฉ ๋ฌธ์ œ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค [11]. ์ด๋กœ ์ธํ•ด ์ˆœ์ˆ˜ SPA ํ˜•ํƒœ์ผ ๊ฒฝ์šฐ AI ๋‹ต๋ณ€ ์—”์ง„์˜ ์ถœ์ฒ˜(Citation)๋‚˜ AI ์˜ค๋ฒ„๋ทฐ์— ํฌํ•จ๋˜์ง€ ๋ชปํ•  ์œ„ํ—˜์ด ํฌ๋‹ค [11]. * **์†Œํ”„ํŠธ 404 (Soft 404) ๋ฌธ์ œ:** ์กด์žฌํ•˜์ง€ ์•Š๋Š” URL์— ์ ‘๊ทผํ•ด๋„ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ผ์šฐํ„ฐ๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๊ฐ€ ๋ฌด์กฐ๊ฑด 200 OK ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์˜ค๋ฅ˜ UI๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค [12, 13]. ์ด๋Š” ํฌ๋กค๋ง ์˜ˆ์‚ฐ์„ ๋‚ญ๋น„์‹œํ‚ค๊ณ  ์‚ฌ์ดํŠธ ํ’ˆ์งˆ ์ ์ˆ˜๋ฅผ ํ•˜๋ฝํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค [12, 13]. **๋ Œ๋”๋ง ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  ์ „๋žต (SSR, SSG, ISR)** SPA์˜ SEO ๋ฌธ์ œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ Œ๋”๋ง ์ž‘์—…์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„ ์ธก์ด๋‚˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์ด๋™์‹œ์ผœ์•ผ ํ•œ๋‹ค [14]. * **์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (SSR):** ์‚ฌ์šฉ์ž ๋˜๋Š” ๋ด‡์˜ ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ ์ „์ฒด HTML์„ ์ƒ์„ฑํ•˜์—ฌ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์—”์ง„์ด ์ฆ‰์‹œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค [5, 7]. ๋งˆ์ผ€ํŒ… ์‚ฌ์ดํŠธ๋‚˜ ๋™์  ์ฝ˜ํ…์ธ , ๋ธ”๋กœ๊ทธ ๋“ฑ์— ์ ํ•ฉํ•˜๋‹ค [5, 14]. * **์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ (SSG):** ๋นŒ๋“œ ์‹œ์ ์— HTML์„ ์‚ฌ์ „ ๋ Œ๋”๋งํ•˜์—ฌ ์ดˆ๊ณ ์†์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋ธ”๋กœ๊ทธ๋‚˜ ๋ฌธ์„œ ํŽ˜์ด์ง€์—์„œ ์™„๋ฒฝํ•œ ํฌ๋กค๋ง ํ™˜๊ฒฝ์„ ๋ณด์žฅํ•œ๋‹ค [6, 15, 16]. * **์ ์ง„์  ์ •์  ์žฌ์ƒ์„ฑ (ISR):** SSG์˜ ์†๋„์™€ SSR์˜ ์ตœ์‹ ์„ฑ ์œ ์ง€ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•จ์œผ๋กœ์จ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค [15-17]. **SPA ํŠนํ™” ๊ธฐ์ˆ ์  SEO ๊ตฌํ˜„ ์›์น™** * **URL ๋ฐ ๋ผ์šฐํŒ…:** ํ•ด์‹œ ๋ผ์šฐํŒ…(`#`)์€ ๊ฒ€์ƒ‰ ์—”์ง„์ด ๋ฌด์‹œํ•˜๋ฏ€๋กœ, HTML5 History API(์˜ˆ: React Router์˜ `BrowserRouter`)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…๋ฆฝ์ ์ด๊ณ  ๊น”๋”ํ•œ URL ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค [18-20]. * **ํฌ๋กค๋ง ๊ฐ€๋Šฅํ•œ ๋งํฌ ๊ตฌ์กฐ:** SPA ๋‚ด๋ถ€ ํƒ์ƒ‰ ์‹œ `onClick` ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ๋กค๋Ÿฌ๊ฐ€ ๋งํฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ๋‹ค. ํƒ์ƒ‰์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํ‘œ์ค€ `` ํƒœ๊ทธ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” `` ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค [18, 20]. * **๋™์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ:** ๋ผ์šฐํŠธ(ํŽ˜์ด์ง€)๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค React Helmet ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ Next.js์˜ ๋‚ด์žฅ `` ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด ``, ๋ฉ”ํƒ€ ์„ค๋ช…, ์บ๋…ธ๋‹ˆ์ปฌ(Canonical) ํƒœ๊ทธ, ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„(Open Graph) ํƒœ๊ทธ ๋“ฑ์„ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค [8, 18, 21, 22]. * **๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ (JSON-LD):** ๊ฒ€์ƒ‰ ์—”์ง„ ๋ฐ AI ํฌ๋กค๋Ÿฌ๊ฐ€ ์ฝ˜ํ…์ธ  ๋ฌธ๋งฅ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ๋ฆฌ์น˜ ์Šค๋‹ˆํŽซ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก Schema.org ๋งˆํฌ์—…(์˜ˆ: ์ œํ’ˆ, ๊ธฐ์‚ฌ, FAQ ๋“ฑ)์„ ๋ฌธ์„œ์˜ `<head>`์— ์ฃผ์ž…ํ•ด์•ผ ํ•œ๋‹ค [23-25]. **Core Web Vitals ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”** * SPA์˜ ๋ฐฉ๋Œ€ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค๊ณผ ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Hydration) ์ง€์—ฐ์€ INP(Interaction to Next Paint)์™€ LCP ์ง€ํ‘œ๋ฅผ ํฌ๊ฒŒ ์•…ํ™”์‹œํ‚จ๋‹ค [26, 27]. * ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์šฐํŠธ ๋‹จ์œ„์˜ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…(Code Splitting)๊ณผ ๋ทฐํฌํŠธ ์•„๋ž˜ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์„ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค [28, 29]. ๋˜ํ•œ, ๋ถ€๋ถ„ ํ•˜์ด๋“œ๋ ˆ์ด์…˜ ๊ตฌ์กฐ๋‚˜ ์›น ์›Œ์ปค(Web Workers)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ณ‘๋ชฉ์„ ์ค„์—ฌ์•ผ ๊ฒ€์ƒ‰ ์—”์ง„ ๋žญํ‚น ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ•จ๊ป˜ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค [28, 30]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Client-Side Rendering]], [[Server-Side Rendering]], [[Core Web Vitals]], [[Interaction to Next Paint]], [[Web Content Accessibility Guidelines]] - **Projects/Contexts:** [[Next.js SEO Optimization]], [[React Router Navigation]], [[AI Answer Engine Optimization]] - **Contradictions/Notes:** ๋ด‡(Bot)์—๊ฒŒ๋งŒ ์‚ฌ์ „ ๋ Œ๋”๋ง๋œ HTML์„ ์ œ๊ณตํ•˜๊ณ  ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•˜๋Š” '๋™์  ๋ Œ๋”๋ง(Dynamic Rendering)' ๊ธฐ๋ฒ•์ด ๊ณผ๊ฑฐ์˜ ์šฐํšŒ์ฑ…์œผ๋กœ ์กด์žฌํ–ˆ์œผ๋‚˜, 2026๋…„ ๊ธฐ์ค€ Google์€ ์ด๋ฅผ ์‚ฌ์šฉ์ž ๊ธฐ๋งŒํ˜• 'ํด๋กœํ‚น(Cloaking)'์œผ๋กœ ๊ฐ„์ฃผํ•  ์œ„ํ—˜์ด ์žˆ์–ด ๊ฐ•๋ ฅํžˆ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ถ€๋“์ดํ•œ ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•˜๊ณ  ์žˆ๋‹ค [31, 32]. --- *Last updated: 2026-04-26*