๐Ÿธminzzi
Minzzi์•ผ
๐Ÿธminzzi
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (130)
    • ์˜ค๋ฅ˜ํ•ด๊ฒฐ (14)
    • FE (35)
      • Next.js (16)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • ๋ฐ๋ธŒ์ฝ”์Šค (7)
    • ์›น ํ”„๋กœ์ ํŠธ (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • ํ”„๋กœ์ ํŠธ (3)
    • Private (27)
      • ํšŒ๊ณ  (7)
      • ๋ฉด์ ‘ (17)
    • ๊ฐœ๋ฐœ๋„์„œ (6)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํž™์˜์—ญ
  • ๋ฉด์ ‘
  • ์›์‹œํƒ€์ž…
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • SSR
  • ์‹คํ–‰์ปจํ…์ŠคํŠธ
  • ์ฝœ์Šคํƒ
  • react
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ํ˜ธ์ด์ŠคํŒ…
  • layout shift
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ์ด๋ฒคํŠธ๋ฃจํ”„
  • ๋ชจ๋˜๋ฆฌ์•กํŠธ๋”ฅ๋‹ค์ด๋ธŒ
  • ์‹คํ–‰์ปจํƒ์ŠคํŠธ
  • next.js
  • ์˜ค๋ธ”์™„
  • ๋ ‰์‹œ์ปฌ
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
  • reflow

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿธminzzi

Minzzi์•ผ

[React] sitemap์œผ๋กœ SEO ์ž‘์—…ํ•˜๊ธฐ
์›น ํ”„๋กœ์ ํŠธ

[React] sitemap์œผ๋กœ SEO ์ž‘์—…ํ•˜๊ธฐ

2024. 6. 15. 19:26

ํŒŒ๋“œ ๋™์•„๋ฆฌ์›๋“ค์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ฑ๊ณผ๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ์„ฑ๊ณผํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ˜๋ฅผ ๋ฝ‘๊ธฐ ์œ„ํ•œ ํ™๋ณด ๊ณผ์ •์—์„œ ์„ฑ๊ณผ๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์ž‘์šฉํ•ด์•ผํ–ˆ๊ธฐ์— SEO๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ–ˆ๋‹ค. SEO์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์—†์–ด์„œ ์ข‹์€ ๊ธฐํšŒ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ๊ฐœ๋ฐœ๋กœ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.


1. ๊ฒ€์ƒ‰์—”์ง„ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€(SERP)

๊ฒ€์ƒ‰์—”์ง„์€ SERP๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

  1. ํฌ๋กค๋ง : ๊ตฌ๊ธ€๋ด‡(์›น ํฌ๋กค๋Ÿฌ)์ด ์›นํŽ˜์ด์ง€์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰์—”์ง„์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. 
  2. ์ธ๋ฑ์‹ฑ : ๊ตฌ๊ธ€๋ด‡์ด ๊ฐ€์ ธ์˜จ ์ •๋ณด๋ฅผ ์ฃผ์ œ๋ณ„๋กœ ์ƒ‰์ธํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค.
  3. ๋žญํ‚น : ์ƒ‰์ธ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์ƒ‰ ์˜๋„์— ๋งž์ถฐ์„œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋žญํ‚น ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

2. ์‚ฌ์ดํŠธ๋งต

SERP๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํฌ๋กค๋ง์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์‚ฌ์ดํŠธ๋งต์€ ์›น์‚ฌ์ดํŠธ์—์„œ ๋ฐœํ–‰ํ•œ ๋ชจ๋“  ์›น ํŽ˜์ด์ง€๋ฅผ ๊ธด ๋ฆฌ์ŠคํŠธ๋กœ ์ •๋ฆฌํ•œ ์ง€๋„์™€ ๊ฐ™์€ ๊ฒƒ์ธ๋ฐ, ์‚ฌ์ดํŠธ๋งต์€ ๊ฒ€์ƒ‰์—”์ง„์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ํฌ๋กค๋ง์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ชจ๋“  ์›นํŽ˜์ด์ง€๋ฅผ ๋น ์ง์—†์ด ์ƒ‰์ธํ•ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

๋‹ค์‹œ ๋งํ•˜์ž๋ฉด, ์‚ฌ์ดํŠธ๋งต์ด๋ž€ ์›น์‚ฌ์ดํŠธ์—์„œ ๊ตฌ๊ธ€์ด๋‚˜ ๋„ค์ด๋ฒ„์™€ ๊ฐ™์€ ๊ฒ€์ƒ‰ ์—”์ง„์— ์ƒ‰์ธํ•  ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋‚˜์—ดํ•œ XML ํŒŒ์ผ์ด๋‹ค.

 

์‚ฌ์ดํŠธ๋งต์ด ์›น์‚ฌ์ดํŠธ๊ฐ€ ๊ฒ€์ƒ‰์—”์ง„์—์„œ ์ƒ์œ„ ๋žญํ‚น์„ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ ์ง์ ‘์ ์œผ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง„ ์•Š์ง€๋งŒ, ๊ฒ€์ƒ‰์—”์ง„์—๊ฒŒ ์›น์‚ฌ์ดํŠธ์—์„œ ํฌ๋กค๋ง ๋˜๊ณ  ์ƒ‰์ธ์ด ๋˜์–ด์•ผ ํ•  ์ค‘์š”ํ•œ ํŽ˜์ด์ง€๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋” ํšจ์œจ์ ์œผ๋กœ ํฌ๋กค๋ง ๋˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— SEO์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค.

3. ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์ดํŠธ๋งต ์‚ฌ์šฉํ•˜๊ธฐ

๊ฒฐ๊ตญ ์‚ฌ์ดํŠธ๋งต์„ ์‚ฌ์šฉํ•˜์—ฌ SEO๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์ดํŠธ๋งต์ด๋ผ๋Š” XMLํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ๊ฒ€์ƒ‰์—”์ง„์—๊ฒŒ ์ œ์ถœํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋ฆฌ์•กํŠธ์—์„œ๋Š” react-router-sitemap์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ sitemap.xml ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

3-1. react-router-sitemap

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

npm install react-router-sitemap

3-2. sitemapRoutes.js ์ƒ์„ฑ

srcํด๋” ์•ˆ์— ๊ธฐ์กด ๋ผ์šฐํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋™์ผํ•˜๊ฒŒ ๋‹ด์€ sitemapRoutes.jsํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

3-3. sitemapGenerator.js ์ƒ์„ฑ

sizemap.xml์„ ์ƒ์„ฑํ•˜๋Š” sitemapGenerator.js๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

require("babel-register")({
  presets: ["es2015", "react"]
});
 
const router = require("./sitemapRoutes").default; // ์ข€ ์ „์— ๋งŒ๋“  sitemapRoutes ํŒŒ์ผ
const Sitemap = require("react-router-sitemap").default;

function generateSitemap() {
    return (
      new Sitemap(router)
          .build("https://www.example.com") // ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝ
          .save("./public/sitemap.xml") // sitemap.xml ํŒŒ์ผ์ด ์ƒ์„ฑ๋  ์œ„์น˜
    );
}

generateSitemap();

 

3-4. sitemapGenerator.js ์‹คํ–‰

3-4-1. dependency ์„ค์น˜

npm install --save-dev babel-cli 
npm install --save-dev babel-preset-es2015 
npm install --save-dev babel-preset-react 
npm install --save-dev babel-register

3-4-2. package.json ์ˆ˜์ •

... 
  "scripts": {     
    ...     
    "sitemap": "babel-node src/sitemaGenerator.js"   
  } 
...

3-4-3. robots.txt

public/robots.txt ํŒŒ์ผ์€ ํฌ๋กค๋Ÿฌ๊ฐ€ ํฌ๋กค๋งํ•ด๋„ ๋˜๋Š”์ง€ ํ˜น์€ ํ•˜๋ฉด ์•ˆ๋˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ํŒŒ์ผ์ด๋‹ค.

# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow: 

sitemap:๋„๋ฉ”์ธ์ฃผ์†Œ/sitemap.xml

 

์—ฌ๊ธฐ๊นŒ์ง€ ํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ๋Š” ๋‹ค๋ฅด์ง€ ์•Š์•˜๋‹ค. pagespeed insights์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ์—์„œ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” ์ˆ˜์น˜๋Š” ํœด๋Œ€์ „ํ™”์™€ ๋ฐ์Šคํฌํ†ฑ์—์„œ ๋ชจ๋‘ 92๋กœ ๋™์ผํ–ˆ๋‹ค.

SEO ์ด์ „ ํœด๋Œ€์ „ํ™”์˜ ์„ฑ๋Šฅ ๊ฒฐ๊ณผ
SEO ์ด์ „ ๋ฐ์Šคํฌํ†ฑ ์„ฑ๋Šฅ ๊ฒฐ๊ณผ

๋ฒˆ์™ธ ์ ์šฉ์‚ฌํ•ญ

pagespeed insights์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ์„ ๋Œ๋ ธ์„ ๋•Œ, ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”๋ถ€๋ถ„์„ ๋ณด๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋‚˜์˜จ๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ๋Š” img ํƒœ๊ทธ์— alt ์†์„ฑ์ด ์—†์–ด ํ•ด๋‹น ํƒœ๊ทธ๋“ค์ด ๋ฌด์‹œ๋œ๋‹ค๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋–ด๋‹ค. ์ด์— ๋ชจ๋“  img ํƒœ๊ทธ๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ alt ์†์„ฑ์„ ์ ์šฉํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋‹ˆ ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”๋Š” 100์ ์ด ๋œฐ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์‚ฌ์‹ค ์ด๋ ‡๊ฒŒ ์ตœ์ ํ™”๋ฅผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๊ฒ€์ƒ‰์ˆœ์œ„๊ฐ€ ์˜ค๋ฅด์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์€ ๊ธฐํš์ž์™€ ๋…ผ์˜ํ•˜๋ฉฐ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„œ์น˜ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.

๋”๋ณด๊ธฐ

์ฐธ๊ณ 
https://seo.tbwakorea.com/blog/seo-guide-2022/

 

SEO (๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”)๋ž€? - ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„ ๊ฐ€์ด๋“œ ์ด์ •๋ฆฌ

SEO (๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”)๋ž€ ์ž์‚ฌ ์‚ฌ์ดํŠธ๋ฅผ ๊ฒ€์ƒ‰์—”์ง„์— ์ƒ์œ„ ๋…ธ์ถœ์‹œ์ผœ ์ž์—ฐ์ ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋†’์ด๋Š” ๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ…์ž…๋‹ˆ๋‹ค. SEO๋ฅผ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ ํŠธ๋ž˜ํ”ฝ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”!

seo.tbwakorea.com

https://seo.tbwakorea.com/blog/how-to-create-and-submit-a-sitemap/#part1

 

์‚ฌ์ดํŠธ๋งต ๋งŒ๋“ค๊ธฐ๋ถ€ํ„ฐ ์ œ์ถœํ•˜๊ธฐ: ์‰ฌ์šด ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ | TBWA ๋ฐ์ดํ„ฐ๋žฉ

์‚ฌ์ดํŠธ๋งต(sitemap.xml)์€ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”์˜ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์ดํŠธ๋งต์ด ๋ฌด์—‡์ธ์ง€, ๋˜ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๋ณด์„ธ์š”.

seo.tbwakorea.com

https://ujeon.medium.com/react-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A7%B5-%EB%A7%8C%EB%93%A4%EA%B8%B0-1116ff8b6c2a

 

[React] ๋ฆฌ์•กํŠธ ์›น์‚ฌ์ดํŠธ ์‚ฌ์ดํŠธ๋งต ๋งŒ๋“ค๊ธฐ

SEO๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด react-router-sitemap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ sitemap.xml ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ujeon.medium.com

https://pagespeed.web.dev/

 

PageSpeed Insights

์˜ฌ๋ฐ”๋ฅธ URL์„ ์ž…๋ ฅํ•˜์„ธ์š”.

pagespeed.web.dev

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'์›น ํ”„๋กœ์ ํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Frontend ์ด๋ฏธ์ง€ ์ตœ์ ํ™”ํ•˜๊ธฐ  (4) 2024.11.14
AWS ํ”„๋ฆฌํ‹ฐ์–ด ์ ์šฉ ๋ฒ”์œ„  (0) 2024.09.13
FE ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ณ ๋ฏผ(feat. FSD ์•„ํ‚คํ…์ฒ˜)  (0) 2024.09.06
[Crop] ํ”„๋กœ์ ํŠธ ํŒ€์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ!  (0) 2024.05.21
    '์›น ํ”„๋กœ์ ํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • Frontend ์ด๋ฏธ์ง€ ์ตœ์ ํ™”ํ•˜๊ธฐ
    • AWS ํ”„๋ฆฌํ‹ฐ์–ด ์ ์šฉ ๋ฒ”์œ„
    • FE ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ณ ๋ฏผ(feat. FSD ์•„ํ‚คํ…์ฒ˜)
    • [Crop] ํ”„๋กœ์ ํŠธ ํŒ€์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ!
    ๐Ÿธminzzi
    ๐Ÿธminzzi

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”