๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์ •์  ์‚ฌ์ดํŠธ 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๋ฐ˜์‘ํ˜•
๐Ÿ“Œ ์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ URL ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ ๊ฒ€์ƒ‰ ์ˆœ์œ„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•, GitHub Pages์˜ ํ•œ๊ณ„, ๊ทธ๋ฆฌ๊ณ  Cloudflare Pages์™€ Netlify๋ฅผ ํ™œ์šฉํ•œ ์™„๋ฒฝํ•œ 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฌธ์ œ ์ƒํ™ฉ: GitHub Pages์˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•œ๊ณ„

๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด GitHub Pages๋ฅผ ์‚ฌ์šฉํ•ด ์ •์  ์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ URL ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํฐ ๋ฌธ์ œ์— ๋ถ€๋”ชํž™๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ๋ก€

๊ธฐ์กด URL: /๋ถ€์‚ฐ์„œ๋ถ€(์‚ฌ์ƒ)-์—์„œ-์น ๊ณก-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ.html ์ƒˆ URL: /๋ถ€์‚ฐ์„œ๋ถ€์‚ฌ์ƒ์—์„œ-์น ๊ณก-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ

์ด๋Ÿฐ URL ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ์ด์œ :

  • ๊ด„ํ˜ธ ์ œ๊ฑฐ๋กœ URL ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ
  • SEO ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ ๊ฐœ์„ 
  • .html ํ™•์žฅ์ž ์ œ๊ฑฐ
  • ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต

JavaScript ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์˜ ๋ฌธ์ œ์ 

GitHub Pages์—์„œ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ JavaScript๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

<script> // JavaScript ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ (GitHub Pages์—์„œ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•) window.location.replace("https://example.com/new-url"); </script>
โš ๏ธ ๋ฌธ์ œ ๋ฐœ์ƒ!
  • ํฌ๋กค๋Ÿฌ๊ฐ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ „ ํŽ˜์ด์ง€๋ฅผ ๋จผ์ € ์ฝ์–ด๋ฒ„๋ฆผ
  • ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ๊ฒ€์ƒ‰ ์ˆœ์œ„๊ฐ€ ํ•˜๋ฝ
  • ์ƒˆ ํŽ˜์ด์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ธ๋ฑ์‹ฑ ์•ˆ ๋จ
  • ์ค‘๋ณต ์ฝ˜ํ…์ธ  ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

2. ์™œ 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ํ•„์ˆ˜์ธ๊ฐ€?

๊ฒ€์ƒ‰์—”์ง„์ด ์ธ์‹ํ•˜๋Š” ๋ฐฉ์‹

๋ฐฉ๋ฒ• ๊ฒ€์ƒ‰๋ด‡ ์ธ์‹ ๊ฒ€์ƒ‰ ๊ฐ€์น˜ ์ „๋‹ฌ SEO ์˜ํ–ฅ
301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ โœ… ์™„๋ฒฝ ์ธ์‹ 90-99% ์ „๋‹ฌ ์ˆœ์œ„ ์œ ์ง€
JavaScript โš ๏ธ ๋ถˆํ™•์‹ค 30-50% ์ „๋‹ฌ ์ˆœ์œ„ ํ•˜๋ฝ ๊ฐ€๋Šฅ
Meta Refresh โš ๏ธ ์•ฝํ•œ ์‹ ํ˜ธ 50-70% ์ „๋‹ฌ ์ŠคํŒธ์œผ๋กœ ์˜ค์ธ
Canonical ํƒœ๊ทธ โš ๏ธ ํžŒํŠธ๋งŒ ๋ถˆํ™•์‹ค ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ์Œ

Google ๊ณต์‹ ์ž…์žฅ

"301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” PageRank(๋งํฌ ๊ฐ€์น˜)์˜ 90-99%๋ฅผ ์ƒˆ URL๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. JavaScript ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” ํฌ๋กค๋ง ์˜ˆ์‚ฐ์„ ์†Œ๋ชจํ•˜๊ณ , ์‹ ํ˜ธ๊ฐ€ ์•ฝํ•ฉ๋‹ˆ๋‹ค."
- Google Search Central

301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์˜ ์žฅ์ 

  • ๊ฒ€์ƒ‰ ๊ฐ€์น˜ ๋ณด์กด: ๊ตฌ URL์˜ ๊ฒ€์ƒ‰ ์ˆœ์œ„๊ฐ€ ์ƒˆ URL๋กœ ๊ฑฐ์˜ ์™„์ „ํžˆ ์ด์ „
  • ๋ฐฑ๋งํฌ ์œ ์ง€: ์™ธ๋ถ€ ์‚ฌ์ดํŠธ์˜ ๋งํฌ ๊ฐ€์น˜ ์†์‹ค ์—†์Œ
  • ์ค‘๋ณต ์ฝ˜ํ…์ธ  ํ•ด๊ฒฐ: ๊ตฌ URL๊ณผ ์ƒˆ URL์ด ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Œ
  • ๋น ๋ฅธ ์ฒ˜๋ฆฌ: ์„œ๋ฒ„ ๋ ˆ๋ฒจ์—์„œ ์ฆ‰์‹œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜: ๊ตฌ๊ธ€๊ณผ ๋„ค์ด๋ฒ„ ๋ชจ๋‘ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹

3. ํ”Œ๋žซํผ ๋น„๊ต: Cloudflare vs Netlify vs CloudType

์ „์ฒด ํ”Œ๋žซํผ ๋น„๊ตํ‘œ

ํ•ญ๋ชฉ Cloudflare Pages Netlify CloudType GitHub Pages
301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ โœ… _redirects โœ… _redirects โš ๏ธ ์ฝ”๋“œ ํ•„์š” โŒ ๋ถˆ๊ฐ€๋Šฅ
๋Œ€์—ญํญ ๋ฌด์ œํ•œ 100GB/์›” ์ œํ•œ์  100GB/์›”
์„ค์ • ๋‚œ์ด๋„ ์ค‘๊ฐ„ ์‰ฌ์›€ ์–ด๋ ค์›€ ๋งค์šฐ ์‰ฌ์›€
ํ•œ๊ตญ ์†๋„ ๋ณดํ†ต ๋А๋ฆผ ๋น ๋ฆ„ ๋น ๋ฆ„
๋น„์šฉ ์™„์ „ ๋ฌด๋ฃŒ ๋ฌด๋ฃŒ (์ œํ•œ) ๋ฌด๋ฃŒ โ†’ ์œ ๋ฃŒ ์™„์ „ ๋ฌด๋ฃŒ
๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ทœ์น™ 2,000๊ฐœ 1,000๊ฐœ ๋ฌด์ œํ•œ(์ฝ”๋“œ) N/A
ํ•œ๊ตญ์–ด ์ž๋ฃŒ ์ ์Œ ๋งŽ์Œ ๋งŽ์Œ ๋งค์šฐ ๋งŽ์Œ

๊ฐ ํ”Œ๋žซํผ ์ƒ์„ธ ๋ถ„์„

1) Cloudflare Pages

โœ… ์žฅ์ 

  • ๋ฌด์ œํ•œ ๋Œ€์—ญํญ (์™„์ „ ๋ฌด๋ฃŒ)
  • ์ง„์งœ HTTP 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • ๋น ๋ฅธ ๊ธ€๋กœ๋ฒŒ CDN (200+ ๋ฐ์ดํ„ฐ์„ผํ„ฐ)
  • ๋ฌด๋ฃŒ SSL ์ž๋™ ๋ฐœ๊ธ‰
  • Web Analytics ๋‚ด์žฅ
  • Workers๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

โŒ ๋‹จ์ 

  • ํ•œ๊ตญ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ์—†์Œ (์ผ๋ณธ ๊ฒฝ์œ )
  • ์ดˆ๊ธฐ ์„ค์ •์ด ์•ฝ๊ฐ„ ๋ณต์žก
  • ํ•œ๊ตญ์–ด ๋ฌธ์„œ ๋ถ€์กฑ
  • UI๊ฐ€ ๋‹ค์†Œ ๋ณต์žก

2) Netlify

โœ… ์žฅ์ 

  • ๋งค์šฐ ์ง๊ด€์ ์ธ UI
  • ์ง„์งœ HTTP 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • ๋นŒ๋“œ ์‹œ Python ์‹คํ–‰ ๊ฐ€๋Šฅ
  • Deploy Preview ๊ธฐ๋Šฅ
  • ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋ฐœ
  • ํ•œ๊ตญ์–ด ์ž๋ฃŒ ํ’๋ถ€

โŒ ๋‹จ์ 

  • ๋Œ€์—ญํญ 100GB/์›” ์ œํ•œ
  • ํ•œ๊ตญ ์†๋„ ๋А๋ฆผ (์ผ๋ณธ/์‹ฑ๊ฐ€ํฌ๋ฅด ๊ฒฝ์œ )
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ 1,000๊ฐœ ์ œํ•œ
  • ์ดˆ๊ณผ ์‹œ ๋น„์šฉ ๋ฐœ์ƒ ($55/100GB)

3) CloudType

โš ๏ธ ์ •์  ์‚ฌ์ดํŠธ์—๋Š” ๋น„์ถ”์ฒœ

CloudType์€ Python ์›น ์•ฑ(Flask, Django) ์‹คํ–‰์šฉ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ •์  HTML ํŒŒ์ผ์— 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด:

  • Flask๋กœ ๋ชจ๋“  ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ทœ์น™์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•จ
  • Python ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ญ์ƒ ์‹คํ–‰๋˜์–ด์•ผ ํ•ด์„œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„
  • ์ •์  ํŒŒ์ผ ์„œ๋น™์— ๋น„ํ•ด ๋งค์šฐ ๋А๋ฆผ
  • ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€

๊ฒฐ๋ก : ์ •์  ์‚ฌ์ดํŠธ์˜ 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์—๋Š” ์™„์ „ํžˆ ๋ถ€์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

4. Cloudflare Pages ๊ตฌํ˜„ ๊ฐ€์ด๋“œ

์ „์ฒด ํ”„๋กœ์„ธ์Šค

  1. Cloudflare ๊ณ„์ • ์ƒ์„ฑ
    1. https://dash.cloudflare.com/sign-up ์ ‘์† 2. ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ฌด๋ฃŒ ๊ฐ€์ž… 3. ์ด๋ฉ”์ผ ์ธ์ฆ ์™„๋ฃŒ
  2. Pages ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
    1. Dashboard โ†’ Pages โ†’ Create a project 2. Connect to Git ์„ ํƒ 3. GitHub ๊ณ„์ • ์—ฐ๊ฒฐ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ 4. ์ €์žฅ์†Œ ์„ ํƒ (์˜ˆ: aptmeter) 5. ๋นŒ๋“œ ์„ค์ •: - Framework preset: None - Build command: (๋น„์›Œ๋‘ ) - Build output directory: / 6. Save and Deploy ํด๋ฆญ
  3. _redirects ํŒŒ์ผ ์ƒ์„ฑ

    GitHub ์ €์žฅ์†Œ ๋ฃจํŠธ์— _redirects ํŒŒ์ผ ์ƒ์„ฑ:

    # _redirects (ํŒŒ์ผ๋ช… ์ •ํ™•ํžˆ, ํ™•์žฅ์ž ์—†์Œ) # ๊ฐœ๋ณ„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ /๋ถ€์‚ฐ์„œ๋ถ€(์‚ฌ์ƒ)-์—์„œ-์น ๊ณก-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ.html /๋ถ€์‚ฐ์„œ๋ถ€์‚ฌ์ƒ์—์„œ-์น ๊ณก-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ 301 /๋ถ€์‚ฐ์„œ๋ถ€(์‚ฌ์ƒ)-์—์„œ-๋ฒŒ๊ต-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ.html /๋ถ€์‚ฐ์„œ๋ถ€์‚ฌ์ƒ์—์„œ-๋ฒŒ๊ต-๊ฐ€๋Š”-๋ฒ„์Šค-์‹œ๊ฐ„ํ‘œ 301 # ํŒจํ„ด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ /*.html /:splat/ 301 # ๋„๋ฉ”์ธ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ https://old-domain.com/* https://new-domain.com/:splat 301
    ๐Ÿ’ก Python์œผ๋กœ ์ž๋™ ์ƒ์„ฑํ•˜๊ธฐ
    def generate_redirects_file(bus_data, sitemap_urls): """Cloudflare Pages์šฉ _redirects ํŒŒ์ผ ์ƒ์„ฑ""" redirects = [] for old_path, data in bus_data.items(): new_url = find_matching_url(old_path, sitemap_urls) if new_url: new_path = new_url.replace(f"https://{NEW_DOMAIN}", "") old_file_path = f"/{old_path}.html" redirects.append(f"{old_file_path} {new_path} 301") with open("_redirects", 'w', encoding='utf-8') as f: f.write("# Cloudflare Pages ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ทœ์น™\n\n") for redirect in redirects: f.write(redirect + "\n")
  4. GitHub์— ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ
    git add _redirects git commit -m "Add Cloudflare redirects" git push origin main

    Cloudflare Pages๊ฐ€ ์ž๋™์œผ๋กœ ์ƒˆ ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค (1-2๋ถ„ ์†Œ์š”).

  5. ํ…Œ์ŠคํŠธ
    # ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12) โ†’ Network ํƒญ์—์„œ ํ™•์ธ https://your-project.pages.dev/๊ตฌ๊ฒฝ๋กœ.html # ๋˜๋Š” curl๋กœ ํ™•์ธ curl -I https://your-project.pages.dev/๊ตฌ๊ฒฝ๋กœ.html # HTTP/2 301 ํ™•์ธ # location: /์‹ ๊ฒฝ๋กœ ํ™•์ธ
  6. ์ปค์Šคํ…€ ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ
    ๋ฐฉ๋ฒ• A: ํ˜„์žฌ DNS ์œ ์ง€ (๋น ๋ฅธ ๋ฐฉ๋ฒ•)

    ๊ธฐ์กด DNS ์ œ๊ณต์ž(๊ฐ€๋น„์•„ ๋“ฑ)์—์„œ:

    ๊ธฐ์กด A ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ: A example.com 185.199.108.153 (GitHub) ์ƒˆ CNAME ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€: CNAME example.com your-project.pages.dev CNAME www your-project.pages.dev
    ๋ฐฉ๋ฒ• B: Cloudflare DNS๋กœ ์™„์ „ ์ด์ „ (์ถ”์ฒœ)
    1. Cloudflare Dashboard โ†’ Add site 2. ๋„๋ฉ”์ธ ์ž…๋ ฅ (์˜ˆ: aptmeter.kr) 3. Free ํ”Œ๋žœ ์„ ํƒ 4. DNS ๋ ˆ์ฝ”๋“œ ์ž๋™ ์Šค์บ” 5. ๋„ค์ž„์„œ๋ฒ„ ๋ณ€๊ฒฝ: - ๊ฐ€๋น„์•„ ๋“ฑ์—์„œ ๋„ค์ž„์„œ๋ฒ„๋ฅผ Cloudflare๋กœ ๋ณ€๊ฒฝ - ์˜ˆ: kim.ns.cloudflare.com todd.ns.cloudflare.com 6. Pages โ†’ Custom domains โ†’ Add domain 7. ๋„๋ฉ”์ธ ์ž…๋ ฅ ํ›„ ์ž๋™ ์—ฐ๊ฒฐ
  7. SSL ์ธ์ฆ์„œ ์ž๋™ ๋ฐœ๊ธ‰ ๋Œ€๊ธฐ

    ๋ณดํ†ต 10-30๋ถ„ ๋‚ด์— ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐœ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

  8. GitHub Pages ์ •๋ฆฌ
    1. GitHub ์ €์žฅ์†Œ Settings โ†’ Pages 2. Custom domain ์ œ๊ฑฐ 3. GitHub Pages ๋น„ํ™œ์„ฑํ™” (์„ ํƒ)
    ๐Ÿ’ก ์ฐธ๊ณ : ์ €์žฅ์†Œ ์ž์ฒด๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Cloudflare Pages๊ฐ€ ๊ณ„์†ํ•ด์„œ GitHub๊ณผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

_redirects ํŒŒ์ผ ๋ฌธ๋ฒ•

ํŒจํ„ด ์„ค๋ช… ์˜ˆ์‹œ
/old ์ •ํ™•ํ•œ ๊ฒฝ๋กœ ๋งค์นญ /old /new 301
/old/* ์™€์ผ๋“œ์นด๋“œ /old/* /new/:splat 301
/:placeholder ํ”Œ๋ ˆ์ด์Šคํ™€๋” /blog/:slug /posts/:slug 301
domain.com ๋„๋ฉ”์ธ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ old.com/* new.com/:splat 301

5. Netlify ๊ตฌํ˜„ ๊ฐ€์ด๋“œ

Netlify ์„ ํƒ ์ด์œ 

Netlify๋ฅผ ์„ ํƒํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ:
  • ํŠธ๋ž˜ํ”ฝ์ด ์›” 100GB ์ด๋‚ด
  • UI ํŽธ์˜์„ฑ์ด ์ค‘์š”
  • ํ•œ๊ตญ์–ด ์ž๋ฃŒ๋ฅผ ์„ ํ˜ธ
  • ์ฒ˜์Œ ์ •์  ์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ… ๊ฒฝํ—˜
  • Deploy Preview ๊ธฐ๋Šฅ ํ•„์š”

๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„

  1. Netlify ๊ฐ€์ž… ๋ฐ ์—ฐ๊ฒฐ
    1. https://app.netlify.com/signup ์ ‘์† 2. GitHub ๊ณ„์ •์œผ๋กœ ๊ฐ€์ž… 3. New site from Git ํด๋ฆญ 4. GitHub ์„ ํƒ ๋ฐ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ
  2. ๋นŒ๋“œ ์„ค์ •
    Build command: (๋น„์›Œ๋‘  - ์ •์  ์‚ฌ์ดํŠธ) Publish directory: /
  3. _redirects ํŒŒ์ผ ์ƒ์„ฑ

    Cloudflare์™€ ๋™์ผํ•œ ๋ฌธ๋ฒ• ์‚ฌ์šฉ:

    # _redirects /๊ตฌ๊ฒฝ๋กœ.html /์‹ ๊ฒฝ๋กœ 301
  4. Deploy

    GitHub์— pushํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

  5. ์ปค์Šคํ…€ ๋„๋ฉ”์ธ ์„ค์ •
    Site settings โ†’ Domain management โ†’ Add custom domain โ†’ ๋„๋ฉ”์ธ ์ž…๋ ฅ โ†’ DNS ์„ค์ • (์ž๋™ ์•ˆ๋‚ด)

netlify.toml๋กœ ๊ณ ๊ธ‰ ์„ค์ •

# netlify.toml [build] publish = "/" [[redirects]] from = "/*.html" to = "/:splat" status = 301 force = true [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY" X-Content-Type-Options = "nosniff"

๋„ค์ด๋ฒ„๋„ 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ธ์‹

๋„ค์ด๋ฒ„ ๊ณต์‹ ๊ฐ€์ด๋“œ:
"301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋Š” ํŽ˜์ด์ง€๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™ํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๋กœ๋ด‡์€ ์ด๋ฅผ ์ธ์‹ํ•˜์—ฌ ์ƒˆ๋กœ์šด URL๋กœ ์ƒ‰์ธ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค."

๊ตฌ๊ธ€ vs ๋„ค์ด๋ฒ„ ์ฐจ์ด์ 

ํ•ญ๋ชฉ ๊ตฌ๊ธ€ ๋„ค์ด๋ฒ„
301 ์ฒ˜๋ฆฌ ์†๋„ ๋น ๋ฆ„ (์ˆ˜์ผ~์ˆ˜์ฃผ) ๋А๋ฆผ (์ˆ˜์ฃผ~์ˆ˜๊ฐœ์›”)
๋งํฌ ๊ฐ€์น˜ ์ „๋‹ฌ 90-99% 70-80% (์ถ”์ •)
JavaScript ์ธ์‹ ์ œํ•œ์  ๊ฑฐ์˜ ๋ฌด์‹œ
ํฌ๋กค๋ง ๋นˆ๋„ ๋†’์Œ ๋‚ฎ์Œ
โš ๏ธ ๋„ค์ด๋ฒ„ ํŠน์ด์‚ฌํ•ญ
  • JavaScript ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ๊ฑฐ์˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ•จ
  • Meta Refresh๋„ ์ธ์‹์ด ์•ฝํ•จ
  • HTTP 301/302๋งŒ ํ™•์‹คํ•˜๊ฒŒ ์ธ์‹
  • ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๊ตฌ๊ธ€๋ณด๋‹ค ํ›จ์”ฌ ๋А๋ฆผ

๋„ค์ด๋ฒ„ ์„œ์น˜์–ด๋“œ๋ฐ”์ด์ € ํ™œ์šฉ

  1. ์‚ฌ์ดํŠธ ๋“ฑ๋ก
    1. https://searchadvisor.naver.com ์ ‘์† 2. ์›น๋งˆ์Šคํ„ฐ ๋„๊ตฌ ๋กœ๊ทธ์ธ 3. ์‚ฌ์ดํŠธ ๋“ฑ๋ก (์†Œ์œ ๊ถŒ ํ™•์ธ)
  2. ์‚ฌ์ดํŠธ ๊ฐ„ ์ฃผ์†Œ ๋ณ€๊ฒฝ (๋„๋ฉ”์ธ ๋ณ€๊ฒฝ ์‹œ)
    ์„œ์น˜์–ด๋“œ๋ฐ”์ด์ € โ†’ ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ โ†’ ์‚ฌ์ดํŠธ ๊ฐ„ ์ฃผ์†Œ ๋ณ€๊ฒฝ โ†’ ๊ตฌ ์‚ฌ์ดํŠธ์™€ ์‹  ์‚ฌ์ดํŠธ ์—ฐ๊ฒฐ โ†’ ๊ฒ€์ฆ ์ฝ”๋“œ ํ™•์ธ โ†’ ์ œ์ถœ
  3. ์‚ฌ์ดํŠธ๋งต ์žฌ์ œ์ถœ
    ์š”์ฒญ โ†’ ์‚ฌ์ดํŠธ๋งต ์ œ์ถœ โ†’ ์ƒˆ URL ๊ตฌ์กฐ์˜ ์‚ฌ์ดํŠธ๋งต URL ์ž…๋ ฅ โ†’ ์ œ์ถœ
  4. ์ฃผ์š” URL ์ง์ ‘ ์ œ์ถœ
    ๊ฒ€์ฆ โ†’ URL ๊ฒ€์‚ฌ โ†’ ์ค‘์š”ํ•œ ์‹ ๊ทœ URL ์ž…๋ ฅ โ†’ ์ƒ‰์ธ ์ƒ์„ฑ ์š”์ฒญ
    ๐Ÿ’ก ํŒ: ํŠธ๋ž˜ํ”ฝ์ด ๋†’์€ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ์šฐ์„  ์ œ์ถœํ•˜๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ ํƒ€์ž„๋ผ์ธ

์‹œ๊ธฐ ๊ตฌ๊ธ€ ๋„ค์ด๋ฒ„ (์ผ๋ฐ˜) ๋„ค์ด๋ฒ„ (์„œ์น˜์–ด๋“œ๋ฐ”์ด์ €)
Week 1-2 ํฌ๋กค๋ง ์‹œ์ž‘ ๋ณ€ํ™” ์—†์Œ ํฌ๋กค๋ง ์‹œ์ž‘
Week 2-4 ๋Œ€๋ถ€๋ถ„ ๋ฐ˜์˜ ๋ณ€ํ™” ์—†์Œ ์ผ๋ถ€ ๋ฐ˜์˜
Week 4-8 ์™„๋ฃŒ ํฌ๋กค๋ง ์‹œ์ž‘ ์ ์ง„์  ๋ฐ˜์˜
Week 8-12 ์•ˆ์ •ํ™” ์ผ๋ถ€ ๋ฐ˜์˜ ๋Œ€๋ถ€๋ถ„ ๋ฐ˜์˜
Week 12+ - ์ ์ง„์  ๋ฐ˜์˜ ์™„๋ฃŒ

7. ๊ฒฐ๋ก  ๋ฐ ์ถ”์ฒœ

ํ”Œ๋žซํผ ์„ ํƒ ๊ฐ€์ด๋“œ

๐ŸŽฏ ์ตœ์ข… ์ถ”์ฒœ

1์ˆœ์œ„: Netlify (์ดˆ๋ณด์ž/์ค‘์†Œ ํŠธ๋ž˜ํ”ฝ)

  • ๊ฐ€์žฅ ์‰ฌ์šด ์„ค์ • (30๋ถ„)
  • ์ง๊ด€์ ์ธ UI
  • ํ•œ๊ตญ์–ด ์ž๋ฃŒ ํ’๋ถ€
  • ์›” 100GB ์ด๋‚ด ํŠธ๋ž˜ํ”ฝ์ด๋ฉด ์ถฉ๋ถ„

2์ˆœ์œ„: Cloudflare Pages (๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ/์žฅ๊ธฐ)

  • ๋ฌด์ œํ•œ ๋Œ€์—ญํญ
  • ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธ€๋กœ๋ฒŒ CDN
  • ํ™•์žฅ์„ฑ ์ข‹์Œ
  • ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฐ€์žฅ ์•ˆ์ •์ 

์ƒํ™ฉ๋ณ„ ์„ ํƒ ๊ฐ€์ด๋“œ

์ƒํ™ฉ ์ถ”์ฒœ ํ”Œ๋žซํผ ์ด์œ 
์ฒ˜์Œ ์‹œ์ž‘ Netlify UI๊ฐ€ ์ง๊ด€์ ์ด๊ณ  ํ•œ๊ตญ์–ด ์ž๋ฃŒ ๋งŽ์Œ
ํŠธ๋ž˜ํ”ฝ ๋งŽ์Œ Cloudflare Pages ๋ฌด์ œํ•œ ๋Œ€์—ญํญ
๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค Cloudflare Pages ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธ€๋กœ๋ฒŒ CDN
ํ•œ๊ตญ ์ „์šฉ Netlify ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋ฐœ
Python ์›น ์•ฑ CloudType ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŒ…
๋‹จ์ˆœ ํ˜ธ์ŠคํŒ… GitHub Pages ๊ฐ€์žฅ ๊ฐ„๋‹จ (301 ๋ถˆํ•„์š” ์‹œ)

์ฒดํฌ๋ฆฌ์ŠคํŠธ

โœ… ์ด์ „ ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
  • ํ˜„์žฌ DNS ์„ค์ • ์Šคํฌ๋ฆฐ์ƒท ๋ฐฑ์—…
  • Google Search Console ์†Œ์œ ๊ถŒ ํ™•์ธ
  • ๋„ค์ด๋ฒ„ ์„œ์น˜์–ด๋“œ๋ฐ”์ด์ € ๋“ฑ๋ก
  • ์ฃผ๋ง/์•ผ๊ฐ„ ์‹œ๊ฐ„ ์„ ํƒ (ํŠธ๋ž˜ํ”ฝ ์ ์„ ๋•Œ)
  • _redirects ํŒŒ์ผ ์™„์„ฑ ๋ฐ ๊ฒ€์ฆ
  • ํ…Œ์ŠคํŠธ URL์—์„œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋™์ž‘ ํ™•์ธ
โœ… ์ด์ „ ํ›„ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
  • SSL ์ธ์ฆ์„œ ์ •์ƒ ์ž‘๋™ ํ™•์ธ
  • ์ฃผ์š” ํŽ˜์ด์ง€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ…Œ์ŠคํŠธ
  • HTTP 301 ์ƒํƒœ์ฝ”๋“œ ํ™•์ธ
  • Google Analytics ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ™•์ธ
  • ์„œ์น˜์ฝ˜์†”/์„œ์น˜์–ด๋“œ๋ฐ”์ด์ € ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์ตœ์†Œ 3๊ฐœ์›” ๊ฒ€์ƒ‰ ์ˆœ์œ„ ์ถ”์ 

์ฃผ์˜์‚ฌํ•ญ

โš ๏ธ ๋ฐ˜๋“œ์‹œ ํ”ผํ•ด์•ผ ํ•  ๊ฒƒ
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒด์ธ: A โ†’ B โ†’ C (3๋‹จ๊ณ„ ์ด์ƒ)
  • ์ˆœํ™˜ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ: A โ†’ B โ†’ A
  • ํด๋กœํ‚น: ๋ด‡๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ  ์ œ๊ณต
  • JavaScript๋งŒ ์˜์กด: ๋„ค์ด๋ฒ„๋Š” ๊ฑฐ์˜ ์ธ์‹ ๋ชป ํ•จ
  • ๊ธ‰ํ•œ ๋„๋ฉ”์ธ ๋ณ€๊ฒฝ: DNS ์ „ํŒŒ ์‹œ๊ฐ„ ๊ณ ๋ ค ํ•„์š”

๋งˆ๋ฌด๋ฆฌ

์ •์  ์‚ฌ์ดํŠธ์˜ URL ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๊ฒ€์ƒ‰ ์ˆœ์œ„๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ง„์งœ HTTP 301 ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. GitHub Pages๋Š” ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, Cloudflare Pages๋‚˜ Netlify๋กœ ์ด์ „ํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž์ด๊ฑฐ๋‚˜ ํŠธ๋ž˜ํ”ฝ์ด ์ ๋‹นํ•˜๋‹ค๋ฉด Netlify๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”. ์„ค์ •์ด ์‰ฝ๊ณ  ํ•œ๊ตญ์–ด ์ž๋ฃŒ๊ฐ€ ํ’๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ๊ฑฐ๋‚˜ ์žฅ๊ธฐ์ ์ธ ํ™•์žฅ์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด Cloudflare Pages๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ ์™„์ „ ๋ฌด๋ฃŒ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์‰ฝ๊ฒŒ ์ด์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”?

๋Œ“๊ธ€๋กœ ์งˆ๋ฌธ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ์„ฑ์‹ฌ๊ป ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!


์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด โ™ฅ ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ฐ˜์‘ํ˜•