FastAPI ๋ผ์ฐํ ์ต์ ํ: ํ๊ธ URL ์ฟผ๋ฆฌ๋ฅผ ์๋ฌธ Slug๋ก ๋ณํํ์ฌ SEO ์ ์์ ์น์ฌ์ดํธ ์ ๋ขฐ๋(E-E-A-T) ๋์ด๊ธฐ
์น์ฌ์ดํธ๋ฅผ ์ง์ ๊ฐ๋ฐํ๊ณ ์ด์ํ๋ค ๋ณด๋ฉด, ์ด๊ธฐ์๋ ๊ธฐ๋ฅ ๊ตฌํ์ ๊ธ๊ธํด ๋ฏธ์ฒ ์ ๊ฒฝ ์ฐ์ง ๋ชปํ๋ ๋ํ ์ผ๋ค์ด ๋์ค์ ๊ฑฐ๋ํ ๋๋นํจ๊ณผ๊ฐ ๋์ด ๋์์ค๊ณค ํฉ๋๋ค. ์ ์๊ฒ๋ '์น์ฌ์ดํธ์ ์ฃผ์(URL) ๊ตฌ์กฐ'๊ฐ ๋ฐ๋ก ๊ทธ๋ฐ ์ผ์ด์ค์์ต๋๋ค.
์ด๋ ๋ , ์ปค๋ฎค๋ํฐ์ ์ฌ๋ผ์จ ์ฌ๋ฏธ์๋ ๊ธ์ ์ง์ธ์๊ฒ ๊ณต์ ํ๊ธฐ ์ํด ์ฃผ์์ฐฝ์ ๋งํฌ๋ฅผ ๋ณต์ฌํ์ฌ ๋ฉ์ ์ ์ ๋ถ์ฌ๋ฃ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋์ ์์ฌํ๊ฒ ๋ง๋๋ ๋์ฐํ ์ฃผ์๊ฐ ํ๋ฉด์ ์ถ๋ ฅ๋์์ต๋๋ค.
https://inspeep.com/?board=%EC%9B%80%EC%A7%A4+%EA%B2%8C%EC%8B%9C%ED%8C%90
์ด๊ฒ ๋ฌด์จ ์
์ฑ ํผ์ฑ ์ฌ์ดํธ ์ฃผ์์ผ๊น์? ์๋๋๋ค. ๋จ์ํ https://inspeep.com/?board=์์งค ๊ฒ์ํ์ด๋ผ๋ ํ๊ธ ์ฃผ์๊ฐ ๋ธ๋ผ์ฐ์ ์ URL ์ธ์ฝ๋ฉ ๊ท์น(Percent-encoding)์ ๊ฑฐ์น๋ฉด์ ์ ๋ ๊ฒ ๊ธฐ๊ดดํ๊ฒ ๋ณํด๋ฒ๋ฆฐ ๊ฒ์
๋๋ค. ์ ์ ๋ค ์
์ฅ์์๋ ํด๋ฆญํ๊ธฐ ๊บผ๋ ค์ง๋ ์คํธ ๋งํฌ์ฒ๋ผ ๋๊ปด์ง ์๋ฐ์ ์๊ณ , ๊ฒ์ ์์ง(SEO) ๋ก๋ด ์
์ฅ์์๋ ์ฌ์ดํธ์ ๊ตฌ์กฐ๋ฅผ ํ์
ํ๊ธฐ ํ๋ ์ต์
์ ๋ค๋น๊ฒ์ด์
(Navigation)์ด์์ต๋๋ค.
์ ๋ ์ฆ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐฑ์๋ ๊ตฌ์กฐ๋ฅผ ๋ฏ์ด๊ณ ์น๋ '์๋ฌธ Slug ๋ง์ด๊ทธ๋ ์ด์ ' ์์ ์ ๋์ ํ์ต๋๋ค.
1. ์ ์๋ฌธ Slug(์๋ณ์)๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
๊ตฌ๊ธ ์ ๋์ผ์ค์ ์น์ธ ๊ฐ์ด๋๋ผ์ธ(E-E-A-T)๊ณผ ๊ฒ์์์ง ์ต์ ํ(SEO) ์ ์์ ๋ฐ๋ฅด๋ฉด, URL์ ์ฌ์ฉ์์ ๋ก๋ด ๋ชจ๋๊ฐ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค.
ํ๊ธ๋ก ๋ ์ฟผ๋ฆฌ ์คํธ๋ง(?board=์์ ๊ฒ์ํ)์ ๊ฐ๋ฐํ ๋๋ ์ง๊ด์ ์ผ์ง ๋ชจ๋ฅด๋, ์น์ ํ์ค ํต์ ๊ท์ฝ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฅผ ASCII ๋ฌธ์๋ก ๋ณํํด์ผ ํ๋ฏ๋ก ๋์์ด ๊ธด ํน์๋ฌธ์ ์กฐํฉ์ผ๋ก ๊นจ์ง๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ฉด, ๊ฒ์ํ์ ๊ณ ์ ์๋ณ์๋ฅผ ์๋ฌธ ์๋ฌธ์์ ํ์ดํ(-)์ผ๋ก ์ด๋ฃจ์ด์ง Slug(์ฌ๋ฌ๊ทธ)๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ฒญ๋ ์ด์ ์ด ์๊น๋๋ค.
์ ๋ขฐ์ฑ(Trust) ์์น: ๋งํฌ๊ฐ ๊น๋ํด์ ธ(
?board=gif) ์ ์ ๋ค์ด ์์ฌํ๊ณ ํด๋ฆญ ๋ฐ ๊ณต์ ํ ์ ์์ต๋๋ค.SEO ์ต์ ํ: ๊ตฌ๊ธ ํฌ๋กค๋ฌ ๋ด์ด URL๋ง ๋ณด๊ณ ๋ ํด๋น ํ์ด์ง๊ฐ ์ด๋ค ์ฑ๊ฒฉ์ ํ์ด์ง(์: /board/tech, /board/humor)์ธ์ง ์๋ฏธ(Semantic)๋ฅผ ํ์ ํ ์ ์์ด ์์ธ ์ ์๊ฐ ์ฌ๋ผ๊ฐ๋๋ค.
2. ๋ฐฑ์๋(FastAPI) ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ ๋ณ๊ฒฝ
์ด ์์ด๋์ด๋ฅผ ์ค์ ์์คํ ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ํ์ด์ฌ FastAPI ๋ฐฑ์๋์ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งคํ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค.
๊ฐ์ฅ ๋จผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Board (๊ฒ์ํ) ํ
์ด๋ธ์ slug๋ผ๋ ์๋ก์ด ์ปฌ๋ผ์ ์ถ๊ฐํ์ต๋๋ค.
๊ธฐ์กด:
name = "์์งค ๊ฒ์ํ"๋ณ๊ฒฝ:
name = "์์งค ๊ฒ์ํ",slug = "gif"
๊ทธ๋ฆฌ๊ณ FastAPI์ ๋ผ์ฐํฐ ์ฝ๋์์ ๊ฒ์ํ ๋ชฉ๋ก์ ์กฐํํ ๋, ๊ธฐ์กด์๋ ํ๊ธ ์ด๋ฆ์ ์ง์ ํํฐ๋งํ๋ค๋ฉด ์ด์ ๋ ์๋ฌธ slug๋ฅผ ๋ฐ์ ๋งคํํ๋๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์์ ํ์ต๋๋ค.

ํ๋ก ํธ์๋(Jinja2 ํ
ํ๋ฆฟ)์ HTML ๋งํฌ๋ค๋ ๋ชจ๋ <a href="/?board={{ board.slug }}"> ํํ๋ก ์ฐพ์๋ฐ๊พธ๊ธฐ๋ฅผ ์งํํ์ฌ, ๋ ์ด์ ํ๊ธ์ด URL์ ๋
ธ์ถ๋์ง ์๋๋ก ์๋ฒฝํ๊ฒ ๋ด์ํ์ต๋๋ค.
3. ํธ๋ฌ๋ธ์ํ : ๊ธฐ์กด์ ์์ธ๋ ํ๊ธ URL๋ค์ 404 ์๋ฌ ๋ฐฉ์ด
ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์๋ฌธ Slug๋ก ๋ฐ๊พผ ํ ๋ฐฐํฌ๋ฅผ ์๋ฃํ์ต๋๋ค. "์ด์ ์๋ฒฝํ๋ค!"๋ผ๊ณ ์๊ฐํ์ง๋ง, ๋ฉฐ์น ๋ค ๊ตฌ๊ธ ์์น ์ฝ์์์ '404 Not Found (ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์)' ์๋ฌ๊ฐ ํญ์ฆํ๊ธฐ ์์ํ์ต๋๋ค.
์์ธ์ ๊ตฌ๊ธ ๊ฒ์ ๋ก๋ด์ด์์ต๋๋ค. ๊ตฌ๊ธ์ ์ด๋ฏธ ๊ณผ๊ฑฐ์ ์ง์ ๋ถํ ํ๊ธ URL(?board=%EC%9B...)๋ค์ ์์งํด์ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋์๋์๋๋ฐ, ์ ๊ฐ ๋ฐฑ์๋์์ ํ๊ธ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ ์ด์ ๋ฐ์ง ์๋๋ก ๋ก์ง์ ๋ฐ๊ฟ๋ฒ๋ ธ์ผ๋ ๋ก๋ด๊ณผ ๊ธฐ์กด ๋ฐฉ๋ฌธ์๋ค์ด ๋ชจ๋ 404 ์๋ฌ ํ์ด์ง๋ฅผ ๋ง์ฃผํ๊ฒ ๋ ๊ฒ์
๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ ๋ FastAPI์ '301 ์๊ตฌ ๋ฆฌ๋ค์ด๋ ํธ(Permanent Redirect)' ๋ฏธ๋ค์จ์ด ๋ก์ง์ ๊ธด๊ธํ๊ฒ ์ถ๊ฐํ์ต๋๋ค. ๋ง์ฝ ๋๊ตฐ๊ฐ ๊ณผ๊ฑฐ์ ํ๊ธ ํ๋ผ๋ฏธํฐ๋ก ์ ์์ ์๋ํ๋ฉด, ์๋ฌ๋ฅผ ๋ฟ๋ ๋์ "์ด ํ์ด์ง๋ ์๋ฌธ ์ฃผ์๋ก ์ด์ฌ ๊ฐ์ด!"๋ผ๊ณ ์๋ ค์ฃผ๋ฉฐ ์๋ก์ด Slug ์ฃผ์๋ก ๊ฐ์ ์ด๋์์ผ ์ฃผ๋ ๊ฒ์ ๋๋ค.

์ด ์ฝ๋๋ฅผ ์ ์ฉํ ์งํ 404 ์๋ฌ๋ ๋ง๋ํ ์ฌ๋ผ์ก๊ณ , ๊ตฌ๊ธ ๊ฒ์ ์์ง๋ ๊ธฐ์กด์ ํ๊ธ ์ฃผ์๋ฅผ ์๋ก์ด ์๋ฌธ Slug ์ฃผ์๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ๋ฐ์ดํธํ๊ธฐ ์์ํ์ต๋๋ค.
๋งบ์ผ๋ฉฐ: 1์ธ ๊ฐ๋ฐ์์ ์ง์ํจ์ด ์ ๋ขฐ๋ฅผ ๋ง๋ ๋ค
URL์ ์ฟผ๋ฆฌ ์คํธ๋ง ๋ช ๊ธ์๊ฐ ๊นจ์ง๋ค๊ณ ํด์ ๋น์ฅ ์ฌ์ดํธ๊ฐ ๋ฉ์ถ๊ฑฐ๋ ์๋น์ค๊ฐ ๋ถ๊ฐ๋ฅํด์ง๋ ๊ฒ์ ์๋๋๋ค. ํ์ง๋ง ์ด๋ฐ ์์ ๋ํ ์ผ๋ค์ด ๋ชจ์ฌ ์น์ฌ์ดํธ ์ ์ฒด์ '์ ์ ๊ฒฝํ(UX)'๊ณผ '์ ๋ขฐ๋'๋ฅผ ๊ฒฐ์ ์ง์ต๋๋ค.
ํนํ 2026๋
์ดํ์ ๊ตฌ๊ธ ์ ๋์ผ์ค ์น์ธ๊ณผ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ "์ด ์ฌ์ดํธ๊ฐ ์ผ๋ง๋ ์ ๋ฌธ์ ์ผ๋ก ์ ๊ด๋ฆฌ๋๊ณ ์๋๊ฐ?"๋ฅผ ๋งค์ฐ ๊น๋ค๋กญ๊ฒ ํ๊ฐํฉ๋๋ค. ์คํธ์ฒ๋ผ ๋ณด์ด๋ ๊ธด ์ธ์ฝ๋ฉ ์ฃผ์๋ฅผ ์ง๊ด์ ์ธ ์๋ฌธ Slug(?board=gif ๋๋ /board/gif)๋ก ์ ๋ํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์ง์ํ ์ต์ ํ ๊ณผ์ ์, ์ฌ์ฌ ๋ด๊ณผ ์ ์ ๋ชจ๋์๊ฒ ์ต๊ณ ์ ํ๊ฐ๋ฅผ ๋ฐ์ ์ ์๋ ํ์คํ ๋ฌด๊ธฐ๊ฐ ๋ ๊ฒ์
๋๋ค.
โ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ (FAQ)
Q1. ?board=gif ๊ฐ์ Query String ๋ฐฉ์ ๋ง๊ณ /board/gif ๊ฐ์ ํจ์ค ํ๋ผ๋ฏธํฐ(Path Parameter) ๋ฐฉ์์ด ๋ ์ข์ง ์๋์?
A. ๋ค, ๋ง์ต๋๋ค! SEO ๊ด์ ์์๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(?board=gif)๋ณด๋ค ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋ช
ํํ ํจ์ค ํ๋ผ๋ฏธํฐ(/board/gif) ๋ฐฉ์์ด ์กฐ๊ธ ๋ ์ ๋ฆฌํ ์ ์์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค. ํ์ง๋ง ๊ธฐ์กด ์์คํ
์ ์ํคํ
์ฒ์ ๋ผ์ฐํฐ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ๊ณ ๋ คํ์ฌ ํ์ฌ ๊ตฌ์กฐ์์ ๊ฐ์ฅ ์์ ํ ๋ฐฉ์์ ์ฑํํ๋ ๊ฒ์ด ์ค๋ฌด์ ์ผ๋ก๋ ๋ ์ค์ํฉ๋๋ค.
Q2. ์๋ฌธ Slug๋ฅผ ๋์
ํ๋ฉด ๊ฐ๋ณ ๊ฒ์๊ธ ์ฃผ์(์: /post/1234)๋ ๋ค ์์ด๋ก ๋ฐ๊ฟ์ผ ํ๋์?
A. ์๋๋๋ค. ๊ฒ์ํ(์นดํ
๊ณ ๋ฆฌ) ์ด๋ฆ์ฒ๋ผ ๋ฌธ์๋ก ์๋ณํด์ผ ํ๋ ๊ณณ์๋ ์๋ฌธ Slug๊ฐ ํ์์ ์ด์ง๋ง, ๊ฐ๋ณ ๊ฒ์๊ธ์ ์ง๊ธ์ฒ๋ผ 1234 ๊ฐ์ ๊ณ ์ ํ ์ซ์ ID(Primary Key)๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ์๋(์ธ๋ฑ์ค ํ์) ๋ฉด์์ ํจ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์
๋๋ค.
Q3. ํ๊ธ์ ์ผ๋ ๋ชจ๋ ๊ณผ๊ฑฐ ๋งํฌ์ 301 ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ๋ฐ๋์ ๊ฑธ์ด์ค์ผ ํ๋์?
A. ์ ๋์ ์ผ๋ก ํ์ํฉ๋๋ค. 301 ๋ฆฌ๋ค์ด๋ ํธ ์์ด ๊ตฌ์กฐ๋ง ๋ฐ๊พธ๋ฉด ๊ธฐ์กด์ ๊ตฌ๊ธ ๊ฒ์์ด๋ ์ธ๋ถ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ๋์๋ ๋ชจ๋ ๋งํฌ๊ฐ 404 ์๋ฌ๋ฅผ ๋ฟ์ผ๋ฉฐ ์ฃฝ์ ๋งํฌ(Broken Link)๊ฐ ๋ฉ๋๋ค. ์ด๋ ๊ฒ์์์ง ์ต์ ํ(SEO) ์ ์๋ฅผ ํญ๋ฝ์ํค๋ ์ต์ ์ ์ง๋ฆ๊ธธ์ด๋ฏ๋ก, ์ฃผ์ ์ฒด๊ณ๋ฅผ ๋ฐ๊ฟ ๋๋ 301 ์ด๋ ๋ก์ง์ ํ์์ ์ผ๋ก ์ง์ฃผ์ด์ผ ํฉ๋๋ค.
๐ฌ ๋๊ธ 0๊ฐ