1. 검색엔진 최적화의 목적

검색엔진 최적화 작업은 여러분의 사이트 내 콘텐츠 정보를 검색엔진이 잘 이해할 수 있도록 정리하는 작업입니다. 이 작업을 통하여 사이트 내 콘텐츠가 네이버의 검색 결과에 누락되지 않도록 조치할 수 있으며, 무엇보다 사용자가 원하는 콘텐츠의 내용을 명확하게 네이버 검색엔진에게 알려 줄 수 있습니다.

네이버 검색은 검색엔진에 친화적인 사이트를 우대합니다.

핵심 체크리스트 10가지

  1. 웹마스터도구에 사이트 등록 및 소유확인 - 네이버 웹마스터도구(Search Advisor)에 사이트를 등록하고 소유권을 인증하세요.
  2. 방화벽/robots.txt 차단 확인 - 검색로봇이 사이트에 접근 가능한지 확인합니다. 방화벽이나 robots.txt로 차단되지 않았는지 점검하세요.
  3. 검색로봇 접근 허용 (Yeti User-Agent) - 네이버 검색로봇 Yeti의 접근을 허용해야 합니다. 서버 방화벽에서 Yeti의 User-Agent를 차단하지 않도록 주의하세요.
  4. 중복 콘텐츠 확인 - 동일하거나 유사한 콘텐츠가 여러 URL에 존재하지 않는지 확인합니다. 중복 콘텐츠는 검색 품질을 저하시킵니다.
  5. 사이트맵 및 RSS 제출 - 사이트맵(Sitemap)과 RSS 피드를 생성하여 웹마스터도구에 제출하세요.
  6. 사이트 연관 채널 마크업 - 사이트와 연관된 채널(블로그, 카페, SNS 등)을 마크업으로 연결하세요.
  7. 검색 결과 확인 (site: 질의) - site:yourdomain.com 질의로 사이트가 검색 결과에 얼마나 노출되는지 확인하세요.
  8. 메인 페이지 noindex 확인 - 메인 페이지에 실수로 noindex 메타 태그가 설정되지 않았는지 확인합니다.
  9. 콘텐츠 JS 로딩 구조 확인 - JavaScript로 콘텐츠를 동적으로 로딩하는 경우 검색로봇이 해당 콘텐츠를 수집할 수 있는지 확인하세요.
  10. 표준 링크 URL 사용 - 모든 페이지에서 일관된 URL 구조(표준 URL)를 사용하세요. <link rel="canonical"> 태그를 활용합니다.

💡 핵심 포인트

검색엔진 최적화는 검색엔진을 위한 작업이 아닌, 사용자를 위한 작업입니다. 사용자가 원하는 정보를 잘 전달할 수 있도록 콘텐츠를 구조화하는 것이 SEO의 본질입니다.

2. 웹 사이트를 만들 때

검색엔진에 최적화된 웹 사이트를 구축하기 위해 다음 원칙을 지켜야 합니다.

단일 호스트 명, 단일 URL 사용

하나의 사이트는 하나의 호스트 명(도메인)과 하나의 URL 체계를 사용해야 합니다. 예를 들어 example.com, www.example.com, example.kr 등 여러 도메인이 동일한 콘텐츠를 서비스하면 검색엔진이 혼란을 겪습니다.

대표(canonical) 주소로 301 redirect

여러 도메인 또는 URL로 접근이 가능한 경우, 대표 주소를 하나 선정하고 나머지 주소는 301 리다이렉트로 대표 주소로 이동시켜야 합니다.

# www 주소를 non-www로 리다이렉트 (Apache .htaccess 예시)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

# 또는 non-www를 www로 리다이렉트
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

호스트 명에 underscore 사용 금지

호스트 명(도메인)에는 underscore(_) 대신 hyphen(-)을 사용해야 합니다. 예: my-site.com (O), my_site.com (X)

robots.txt 설정 방법

robots.txt 파일은 웹 사이트의 루트 디렉토리에 위치해야 하며, 검색로봇의 접근을 제어합니다.

User-agent: *
Disallow: /private/
Disallow: /admin/
Allow: /

User-agent: Yeti
Allow: /

Sitemap: https://example.com/sitemap.xml

사이트맵 XML 파일 생성

사이트맵은 사이트의 모든 중요 페이지를 검색엔진에 알려주는 XML 파일입니다. 웹마스터도구를 통해 제출할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-06-01</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://example.com/about/</loc>
    <lastmod>2026-05-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

오류 페이지 HTTP 규약 준수 (404, 403, 503)

오류 페이지는 반드시 적절한 HTTP 응답 코드를 반환해야 합니다. 존재하지 않는 페이지는 404, 접근 권한이 없는 페이지는 403, 일시적으로 서비스를 사용할 수 없는 경우 503을 반환합니다.

모바일 친화적인 사이트 (반응형 웹)

네이버는 모바일 검색 사용자가 증가함에 따라 모바일 친화적인 사이트를 권장합니다. 반응형 웹 디자인(Responsive Web Design)을 적용하여 하나의 HTML로 모든 기기에 최적화된 화면을 제공하세요.

<meta name="viewport" content="width=device-width, initial-scale=1.0">

3. robots.txt 설정하기

robots.txt는 검색로봇에게 사이트 수집을 허용하거나 제한하는 국제 권고안입니다. 웹 사이트의 루트 디렉토리에 위치해야 하며, 검색로봇이 사이트에 접근하기 전에 가장 먼저 확인하는 파일입니다.

robots.txt HTTP 응답 코드별 동작

응답 코드 설명
2xx 로봇 배제 표준 규칙 해석 - robots.txt 파일을 정상적으로 읽고 규칙을 적용합니다.
3xx 리다이렉트를 최대 5회까지 허용하며, 최종 도착지의 robots.txt 규칙을 적용합니다.
4xx 모든 접근을 허용하는 것으로 해석합니다. (robots.txt를 찾을 수 없으므로 제한 없음)
5xx 모든 접근을 허용하지 않는 것으로 해석합니다. (서버 오류로 안전하게 차단)

robots.txt 예제

전체 차단 후 Yeti만 허용

User-agent: *
Disallow: /

User-agent: Yeti
Allow: /

특정 디렉토리만 차단

User-agent: *
Disallow: /admin/
Disallow: /private/
Disallow: /tmp/

User-agent: Yeti
Allow: /

⚠️ 주의사항

robots.txt로 차단된 페이지는 검색 결과에 완전히 누락될 수 있습니다. 중요한 페이지가 실수로 차단되지 않도록 주의하세요. 또한, robots.txt는 보안 기능이 아니므로 민감한 페이지는 인증 시스템으로 보호해야 합니다.

4. 웹 페이지의 이동 (Redirect)

웹 페이지를 다른 주소로 이동할 때는 반드시 적절한 HTTP 리다이렉트를 사용해야 합니다.

JS redirect 사용 금지

JavaScript를 사용한 리다이렉트(window.location, meta refresh 등)는 검색엔진이 제대로 인식하지 못할 수 있습니다. 반드시 서버 단의 HTTP 리다이렉트를 사용하세요.

사용 금지: 아래와 같은 JavaScript 리다이렉트는 검색엔진 최적화에 적합하지 않습니다.
<!-- 사용 금지: JavaScript 리다이렉트 -->
<script>window.location.href = 'https://example.com/new-page';</script>

<!-- 사용 금지: meta refresh 리다이렉트 -->
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

영구 이동: 301 Moved Permanently

페이지가 영구적으로 다른 주소로 이동한 경우 301 리다이렉트를 사용합니다. 검색엔진은 기존 페이지의 랭킹 점수를 새 주소로 이전합니다.

임시 이동: 302 Temporarily Moved

페이지가 일시적으로 다른 주소로 이동한 경우 302 리다이렉트를 사용합니다. 검색엔진은 기존 URL을 유지하고 랭킹 점수도 유지합니다.

연속 redirect 최소화 (최대 5회)

여러 번의 연속적인 리다이렉트(리다이렉트 체인)는 검색로봇의 크롤링 효율을 저하시킵니다. 가능한 한 직접적인 리다이렉트를 사용하고, 최대 5회를 초과하지 않도록 합니다.

💡 권장 사항

리다이렉트 체인은 검색로봇이 페이지를 발견하는 데 지연을 발생시킵니다. A → B → C → D보다 A → D로 직접 리다이렉트하도록 설정을 정리하세요.

5. 웹 사이트 이전

사이트를 다른 도메인이나 서버로 이전할 때는 반드시 아래 5단계 절차를 따라야 검색 순위 손실을 최소화할 수 있습니다.

1

신규 사이트로 콘텐츠 이동

기존 사이트의 모든 콘텐츠를 신규 사이트로 이동합니다. 콘텐츠의 구조와 URL 체계를 가능한 한 유지하는 것이 좋습니다.

2

신규 도메인 할당

신규 도메인을 설정하고 SSL 인증서를 포함한 모든 서버 구성을 완료합니다. 신규 사이트가 정상적으로 작동하는지 충분히 테스트합니다.

3

301 HTTP redirect 설정

기존 사이트의 모든 URL을 대응하는 신규 사이트 URL로 301 영구 리다이렉트를 설정합니다. URL 구조가 변경된 경우에도 올바르게 매핑되어야 합니다.

4

웹마스터도구에 신규 사이트 등록

네이버 웹마스터도구(Search Advisor)에 신규 사이트를 등록하고 소유권을 인증합니다. 사이트맵을 제출하여 검색로봇이 새 사이트를 빠르게 발견할 수 있도록 합니다.

5

구 사이트 종료

모든 리다이렉트가 정상 작동하고 신규 사이트가 검색 결과에 안정적으로 노출되기 시작하면 구 사이트를 종료합니다. 구 사이트는 최소 30일 이상 301 리다이렉트를 유지하는 것이 좋습니다.

⚠️
주의: 사이트 이전 시 URL 구조를 변경하면 검색 순위에 일시적인 변동이 발생할 수 있습니다. 가능한 한 URL 구조를 유지하고, 변경이 불가피한 경우 웹마스터도구의 "주소 변경" 기능을 활용하세요.

6. 웹 사이트 운영 종료

더 이상 사이트를 운영하지 않을 경우, 적절한 종료 절차를 따라야 합니다.

사용자 쓰기 권한 회수

더 이상 사용자가 콘텐츠를 작성하거나 수정할 수 없도록 모든 쓰기 권한을 회수합니다. 회원가입, 댓글 작성, 게시판 글쓰기 등의 기능을 비활성화합니다.

최소 1개월 이상 종료 공지

사이트 운영 종료를 최소 1개월 전부터 사이트 메인 페이지와 중요 페이지에 공지합니다. 사용자에게 데이터 백업 기회를 제공하고, 대체 서비스가 있다면 안내합니다.

방치 시 스팸/도메인 탈취 위험

운영 종료 후 사이트를 방치하면 악의적인 제3자가 사이트를 탈취하거나 스팸 페이지로 활용할 위험이 있습니다. 도메인 만료 전에 필요한 조치를 완료하고, 가능하다면 사이트를 완전히 삭제하는 것이 안전합니다.

🚨 보안 주의

운영 종료된 사이트를 장기간 방치하면 스팸 링크 유포, 피싱 사이트, 악성코드 배포 등에 악용될 수 있습니다. 사이트 종료 후에는 반드시 서버를 중단하거나 적절한 조치를 취하세요.

7. 검색로봇 확인 방법

네이버 검색로봇(Yeti)이 사이트에 접근하는 것을 확인하거나, 서버 로그에서 Yeti의 접근을 식별하는 방법입니다.

User-Agent: Yeti

네이버 검색로봇의 User-Agent는 Yeti/1.1입니다. 서버 로그에서 아래 User-Agent 문자열을 확인할 수 있습니다.

Mozilla/5.0 (compatible; Yeti/1.1; +https://naver.com/bot.html)

IP 확인: 역 DNS 조회

Yeti의 IP 주소는 역 DNS 조회를 통해 crawl.xxx.web.naver.com 형태로 확인됩니다. 서버 로그에서 Yeti의 접근을 확인하려면 IP에 대해 역 DNS 조회를 수행하세요.

# Windows 명령 프롬프트
nslookup xxx.xxx.xxx.xxx

# 결과 예시
# Name: crawl123.web.naver.com

IP 범위 목록 제공 (JSON/CIDR)

네이버는 검색로봇 Yeti의 IP 범위를 CIDR 형식으로 제공합니다. 서버 방화벽 설정 시 이 IP 범위를 참고하여 Yeti의 접근을 허용할 수 있습니다.

💡 Yeti IP 확인 방법

네이버 웹마스터도구에서 Yeti의 최신 IP 범위 목록을 확인할 수 있습니다. 방화벽에서 검색로봇을 차단하지 않도록 주의하세요.

8. HTTP 규약

검색엔진 최적화를 위해 서버는 반드시 HTTP 규약을 올바르게 준수해야 합니다. 특히 응답 코드(Status Code)는 검색로봇이 페이지 상태를 판단하는 중요한 기준입니다.

HTTP 응답코드 표

코드 설명
200 OK 정상 - 페이지가 정상적으로 로드되었습니다. 검색로봇이 콘텐츠를 수집하여 색인합니다.
301 영구 이동 - 페이지가 영구적으로 다른 주소로 이동했습니다. 검색엔진은 기존 랭킹을 새 주소로 이전합니다.
302 임시 이동 (호환성) - 페이지가 일시적으로 다른 주소로 이동했습니다. 기존 URL을 유지합니다.
303 / 307 임시 이동 (HTTP 1.1) - HTTP 1.1 규약에서의 임시 이동을 나타냅니다. 302와 유사하게 동작합니다.
404 Not Found - 요청한 페이지를 찾을 수 없습니다. 존재하지 않는 페이지는 반드시 404를 반환해야 합니다.
403 Forbidden - 페이지에 접근할 권한이 없습니다. 인증이 필요한 페이지에서 사용합니다.
500 Server Error - 서버 내부 오류가 발생했습니다. 지속적인 500 오류는 크롤링 효율을 저하시킵니다.
503 Service Unavailable - 서비스를 일시적으로 사용할 수 없습니다. 점검 등 일시적 중단 시 사용합니다.

⚠️ 주의사항

존재하지 않는 페이지에 200 OK를 반환하면 (Soft 404) 검색엔진이 불필요한 페이지를 색인하게 됩니다. 반드시 올바른 HTTP 응답 코드를 반환해야 합니다.

올바른 HTTP 응답 코드 설정 예제

# Apache .htaccess 예시

# 404 에러 페이지
ErrorDocument 404 /404.html

# 403 에러 페이지
ErrorDocument 403 /403.html

# 503 에러 페이지
ErrorDocument 503 /503.html

# 301 리다이렉트
Redirect 301 /old-page.html /new-page.html
# Nginx 설정 예시

# 404 에러 페이지
error_page 404 /404.html;

# 403 에러 페이지
error_page 403 /403.html;

# 503 에러 페이지
error_page 503 /503.html;

# 301 리다이렉트
rewrite ^/old-page\.html$ /new-page.html permanent;

🚀 다음 단계

SEO 기초를 이해했다면, 이제 더 심화된 내용을 학습할 차례입니다.