최근 회사 홈페이지의 검색 최적화를 개선하는 작업을 맡게 되었다.
기존에는 검색 결과에 불필요한 페이지가 노출되거나, 원하는 연관 페이지가 추천되지 않는 문제가 있었다.
이를 해결하기 위해 검색 엔진이 사이트를 더 잘 이해하고, 유저에게 더 보기 좋은 UI로 노출될 수 있도록 사이트맵(Sitemap), robots.txt 그리고 구조화된 데이터(Structured Data)를 최적화하는 작업을 진행하였다.
이 과정에서 직접 조사하고 적용한 SEO 최적화 방법을 정리해보았다.
SEO(Search Engine Optimization)는 단순히 검색 엔진에서 상위에 노출되는 것을 넘어, 웹사이트 트래픽 증가, 브랜드 신뢰도 향상, 전환율(Conversion Rate) 상승 같은 중요한 효과를 가져온다.
특히, 검색 결과에서 더 나은 UI로 표시되면 클릭률(CTR, Click-Through Rate)이 높아져 방문자 수 증가로 이어질 가능성이 크다.
SEO 최적화를 위해 가장 중요한 3가지 요소를 정리했다.
사이트맵은 웹사이트의 지도를 만들어 검색 엔진이 어디를 방문해야 하는지 알려주는 역할을 한다.
검색 엔진이 사이트맵을 통해 웹사이트 구조를 쉽게 이해할 수 있도록 함으로써, 검색 엔진이 어디를 먼저 방문해야 하는지, 어떤 페이지가 중요한지 파악하는 데 도움을 준다.
특히, 수천 개의 페이지를 보유한 이커머스 사이트나 뉴스 사이트에서는 사이트맵이 없으면 새로운 페이지가 검색 결과에 반영되기까지 오랜 시간이 걸릴 수 있다.
// sitemap.xml
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2025-02-16</lastmod>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2025-02-14</lastmod>
<priority>0.8</priority>
</url>
</urlset>
sitemap.xml
을 생성하고 웹사이트 루트 디렉토리에 업로드한다. (https://example.com/sitemap.xml
)사이트맵은 검색 엔진이 접근할 수 있도록 설정된 공개 문서이므로, ${도메인}/sitemap.xm
로 쉽게 확인이 가능하다.
만약 구글의 사이트맵 구조를 보고 싶다면, https://www.google.com/sitemap.xml 이렇게 ${도메인}/sitemap.xml
로 접근할 수 있다.
구글과 같이 일부 사이트는 여러 개의 사이트맵을 포함하거나 특정 카테고리 별로 사이트맵을 관리하기 위해 사이트맵 색인 파일을 관리하기도 한다.
(출처: Google Sitemap.xml 일부)
robots.txt는 검색 엔진이 웹사이트에서 크롤링할 수 있는 페이지와 차단해야 하는 페이지를 정하는 규칙이다.
robots.txt를 잘 활용하면 검색 엔진이 중요하지 않은 페이지를 크롤링하는 시간을 줄이고, SEO 점수를 높이는 데 도움을 줄 수 있다.
✅ 하지만 색인(Indexing)을 막는 것은 아니고, 크롤링만 차단하는 기능을 한다.
색인을 완전히 막으려면 meta robots
태그에서 noindex
를 설정하여, 특정 페이지가 검색 결과에 인덱싱이 되지 않도록 해야 한다.
<head>
<meta name="robots" content="noindex, nofollow">
</head>
위 코드를 추가하면 해당 페이지가 검색 엔진에 색인되지 않으며, 내부 링크도 따라가지 않도록 제한된다.
// robots.txt
User-agent: Googlebot
Disallow: /nogooglebot/
User-agent: *
Allow: /
Sitemap: https://www.example.com/sitemap.xml
Googlebot
, AdsBot-Google
등)# 특정 크롤러(Googlebot)만 차단
User-agent: Googlebot
Disallow: /
# 모든 크롤러 차단 (AdsBot-Google 제외)
User-agent: *
Disallow: /
Disallow: /terms/ # /terms/ 및 모든 하위 경로 차단
Disallow: /private/* # /private/로 시작하는 모든 경로 차단
Disallow: /*.pdf # .pdf 확장자 파일 차단
https://www.example.com/
아래 모든 URL에 관한 크롤링을 제어하려면 robots.txt 파일이 https://www.example.com/robots.txt
에 있어야 한다.구조화된 데이터는 검색 엔진이 웹페이지의 콘텐츠를 더 쉽게 이해하도록 돕고, 검색 결과에서 더욱 풍부한 UI(리치 스니펫)로 노출되도록 하는 웹표준 기술이다.
예를 들어, 쿠팡 같은 쇼핑몰 검색 결과에서 가격, 리뷰, 별점 등이 바로 보이는 것이 구조화된 데이터 덕분이다.
Google에서는 웹에서 찾은 구조화된 데이터를 사용하여 페이지의 콘텐츠를 파악할 뿐 아니라 마크업에 포함된 개인, 책, 회사에 관한 정보 등 웹 및 전반적인 세상에 관한 정보를 수집한다.
구글에서는 구조화된 데이터를 사용하여 페이지의 콘텐츠를 파악하고, 검색 결과에서 해당 콘텐츠를 캐러셀, 레시피 등 다채로운 방식으로 UI 상 노출하며 이를 리치 결과라고 한다.
사이트가 이러한 리치 결과로 표시되도록 하려면 사이트에서 각 유형별로 구조화된 데이터를 구현하는 방법에 관한 가이드를 따르어, 마크업을 완성시켜야 한다.
예를 들어, 웹페이지 본문에 소프트웨어 애플리케이션 정보를 알릴 수 있는 필드들로 채운 구조화된 데이터를 작성하게 되면, 다음과 같이 검색 결과에 앱 세부 정보를 더욱 리치하게 표시할 수 있다.
다음은 웹 애플리케이션 정보로 표시될 수 있으며 앱 이름, 설치가능한 OS, 카테고리, 평점, 가격 등 세부정보를 설명하는 구조화된 JSON-LD 데이터 스니펫이다.
<html>
<head>
<title>Angry Birds</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Angry Birds",
"operatingSystem": "ANDROID",
"applicationCategory": "GameApplication",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"ratingCount": 8864
},
"offers": {
"@type": "Offer",
"price": 1.00,
"priceCurrency": "USD"
}
}
</script>
</head>
<body>
</body>
</html>
구글에서 제공하는 구글 리치 검색 결과 테스트를 활용하여, 우리 웹사이트에 적용할 혹은 적용된 구조화된 데이터 마크업을 테스트 할 수 있다.