고급GoogleNaver
사이트 리뉴얼 & 마이그레이션 301 매핑 및 트래픽 방어 전략
핵심 요약 (TL;DR)
도메인 변경, 플랫폼 이동(AWS 이관, 프레임워크 교체 등) 시 검색 트래픽과 도메인 권위(PageRank) 손실을 100% 방어하는 301 리다이렉트 매핑 실무.
사이트 마이그레이션의 유형과 SEO 위험도
사이트 마이그레이션은 사이트의 URL 구조, 도메인, 플랫폼, 디자인 등이 크게 변경되는 모든 작업을 말합니다. SEO 관점에서 마이그레이션은 검색 트래픽을 잃을 수 있는 가장 위험한 이벤트입니다.
마이그레이션 유형별 SEO 위험도
| 유형 | 예시 | SEO 위험도 | 주요 위험 요소 |
|---|---|---|---|
| 도메인 변경 | oldsite.com → newsite.com | 🔴 매우 높음 | 모든 URL의 도메인이 변경. 도메인 권위 전이 필요 |
| 프로토콜 변경 | HTTP → HTTPS | 🟡 중간 | Google은 별도 사이트로 인식. 올바른 301 필수 |
| CMS/플랫폼 변경 | WordPress → Next.js | 🔴 높음 | URL 구조가 완전히 변경될 가능성. 퍼머링크 패턴 차이 |
| URL 구조 변경 | /blog/123 → /blog/seo-guide | 🔴 높음 | 기존 인덱싱된 URL 전부 변경. 대량 301 매핑 필요 |
| 사이트 합병 | siteA.com + siteB.com → combined.com | 🔴 매우 높음 | 두 사이트의 권위를 하나로 통합. 중복 URL 처리 |
| 디자인 리뉴얼 (URL 유지) | 디자인만 변경, URL 동일 | 🟢 낮음 | URL·콘텐츠 동일하면 SEO 영향 최소. 단, CWV 변화 주의 |
| 서브폴더 ↔ 서브도메인 | blog.site.com → site.com/blog | 🟡 중간 | Google이 별도 사이트로 취급 → 권위 이전 필요 |
마이그레이션 트래픽 손실 통계
- 평균 10~30%의 오가닉 트래픽 손실이 발생 (잘 수행한 경우)
- 잘못 수행하면 60~80%까지 트래픽이 감소하고 회복에 6~12개월 소요
- 완벽하게 수행해도 일시적으로 10~15% 하락 후 4~8주 내 회복이 일반적
10~30%평균 트래픽 손실올바른 301 매핑을 한 경우에도 일시적 하락
60~80% 손실최악 시나리오301 없이 마이그레이션 시 회복에 6~12개월
4~8주회복 기간완벽한 301 매핑 시 트래픽 회복 소요 시간
마이그레이션 전 준비: 5단계 사전 작업
1단계: 현재 상태 전수 조사 (벤치마크)
| 조사 항목 | 도구 | 기록 내용 |
|---|---|---|
| 인덱싱된 URL 전체 목록 | GSC Coverage 보고서, site: 검색, Screaming Frog | 인덱싱된 모든 URL과 HTTP 상태 코드 |
| 오가닉 트래픽 기록 | GA4, GSC Performance | 월별 오가닉 세션, 클릭 수, 노출수, 평균 순위 |
| 키워드 순위 | GSC, Ahrefs, SEMrush | 상위 100개 키워드와 현재 순위 |
| 백링크 프로필 | Ahrefs, Majestic | 총 백링크 수, 참조 도메인 수, 최고 DA 링크 |
| Core Web Vitals | PageSpeed Insights, CrUX | LCP, CLS, INP 현재 수치 |
| 사이트맵·robots.txt | 직접 확인 | 현재 사이트맵 URL, robots.txt 규칙 |
2단계: 전체 URL 인벤토리 생성
# Screaming Frog로 현재 사이트 전체 크롤
# 결과: 모든 URL, 상태 코드, 리다이렉트 체인, canonical, 제목 등
# CSV로 내보내기 → URL 매핑의 원본 데이터로 사용
크롤 결과와 GSC의 인덱싱된 URL, GA4의 트래픽 있는 URL을 병합하여 "하나도 빠뜨리지 않는" 완전한 URL 목록을 만드세요.
3단계: 301 리다이렉트 매핑 테이블 작성
가장 중요한 작업입니다. 모든 기존 URL을 새 URL에 1:1로 매핑합니다.
| 기존 URL | 새 URL | 상태 | 비고 |
|---|---|---|---|
| /blog/123 | /blog/seo-guide | 301 | 슬러그 변경 |
| /products/old-widget | /shop/widget-pro | 301 | 카테고리 구조 변경 |
| /faq | /help/faq | 301 | URL 구조 변경 |
| /discontinued-page | - | 410 | 영구 삭제 (410 Gone) |
4단계: 스테이징 환경에서 사전 테스트
- 스테이징 사이트에서 301 매핑이 올바르게 작동하는지 검증
- robots.txt에
Disallow: /를 설정하여 스테이징이 인덱싱되지 않도록 차단 - meta robots
noindex도 추가하여 이중 안전장치
5단계: 마이그레이션 일정 계획
- 비수기에 실행: 트래픽이 가장 적은 시기 선택. 블랙프라이데이 직전에 마이그레이션하면 재앙
- 주중 초반에 실행: 월·화에 실행하면 문제 발생 시 주중에 대응 가능
- 롤백 계획 준비: 문제 발생 시 즉시 이전 상태로 복원할 수 있는 계획
301 리다이렉트 실전: 구현 방법과 주의사항
301 vs 302 리다이렉트
| 코드 | 의미 | SEO 영향 | 마이그레이션 사용 |
|---|---|---|---|
| 301 | 영구 이동 (Permanent Redirect) | ✅ PageRank 전이 (~90~99%) | ✅ 마이그레이션에 반드시 사용 |
| 302 | 임시 이동 (Temporary Redirect) | ⚠️ PageRank 전이 안 됨 (원래 URL에 유지) | ❌ 마이그레이션에 사용하면 안 됨 |
| 307 | 임시 이동 (HTTP 메서드 유지) | ⚠️ 302와 동일 | ❌ 사용하지 않음 |
| 308 | 영구 이동 (HTTP 메서드 유지) | ✅ 301과 동일 | ✅ API 엔드포인트 이동 시 사용 |
Nginx에서 301 리다이렉트 구현
server {
listen 80;
server_name old-domain.com;
# 개별 URL 매핑
location = /blog/123 {
return 301 https://new-domain.com/blog/seo-guide;
}
# 패턴 기반 매핑 (블로그 전체)
location ~ ^/blog/(.*)$ {
return 301 https://new-domain.com/blog/$1;
}
# 나머지 모든 URL → 새 도메인의 같은 경로로
location / {
return 301 https://new-domain.com$request_uri;
}
}
Next.js에서 리다이렉트 구현
// next.config.js
module.exports = {
async redirects() {
return [
// 개별 매핑
{ source: '/blog/123', destination: '/blog/seo-guide', permanent: true },
{ source: '/old-page', destination: '/new-page', permanent: true },
// 패턴 매핑 (와일드카드)
{ source: '/products/:slug', destination: '/shop/:slug', permanent: true },
// 정규식 매핑
{ source: '/category/:id(\\d+)', destination: '/c/:id', permanent: true },
];
},
};
301 리다이렉트 5가지 규칙
- 1:1 정확한 매핑: 기존 URL과 가장 유사한 콘텐츠의 새 URL로 매핑. 모든 페이지를 홈페이지로 리다이렉트하면 Google이 이를 거의 "소프트 404"로 처리
- 리다이렉트 체인 방지: A→B→C→D 같은 체인은 크롤 버짓 낭비 + PageRank 손실. 항상 A→D로 직접 연결
- 최소 1년간 유지: 301은 최소 1년, 가능하면 영구적으로 유지. 너무 빨리 제거하면 Google이 이전 URL로 다시 인덱싱
- HTTPS 포함: HTTP→HTTPS + 도메인 변경을 동시에 처리할 때는 한 번에 최종 URL로 리다이렉트 (체인 방지)
- 사이트맵 업데이트: 새 사이트맵에는 새 URL만 포함. 이전 URL은 제거
마이그레이션 후 모니터링: 7일·30일·90일 체크리스트
D-Day: 전환 직후 (0~24시간)
| 항목 | 동작 |
|---|---|
| ☑ 301 리다이렉트 테스트 | 주요 URL 50개 이상을 직접 테스트하여 올바른 새 URL로 리다이렉트되는지 확인 |
| ☑ GSC에 새 속성 추가 | 새 도메인을 GSC에 추가하고 소유권 확인 |
| ☑ GSC 주소 변경 도구 실행 | 설정 → 주소 변경 (Change of Address) → 이전 도메인 → 새 도메인으로 알림 |
| ☑ 새 사이트맵 제출 | 새 URL만 포함된 사이트맵을 GSC에 제출 |
| ☑ robots.txt 확인 | 새 사이트의 robots.txt가 크롤을 차단하지 않는지 확인 |
| ☑ noindex 제거 확인 | 스테이징에서 사용한 noindex가 프로덕션에 남아있지 않은지 확인 |
1~7일: 초기 모니터링
| 항목 | 도구 | 확인 내용 |
|---|---|---|
| ☑ 크롤 에러 확인 | GSC Coverage | 404 에러가 급증하면 301 매핑 누락 |
| ☑ 인덱싱 상태 | GSC URL 검사 | 새 URL이 인덱싱되기 시작하는지 확인 |
| ☑ 리다이렉트 체인 발견 | Screaming Frog | 3단계 이상의 체인이 있는지 크롤로 확인 |
| ☑ 오가닉 트래픽 추적 | GA4 | 일별 오가닉 세션 추이 모니터링 |
| ☑ 순위 변동 확인 | GSC Performance, Ahrefs | 주요 키워드 순위 하락 정도 확인 |
8~30일: 안정화 기간
- 인덱싱 전환 확인: GSC에서 이전 URL이 "리다이렉트"로 표시되고 새 URL이 인덱싱되는지 확인
- 트래픽 회복 추이: 초기 10~15% 하락 후 점진적 회복이 정상. 30% 이상 하락이 지속되면 301 매핑 재점검
- 백링크 전이 확인: Ahrefs에서 새 도메인의 백링크 수가 이전만큼 성장하는지 확인
- 404 에러 지속 모니터링: GSC에서 새로 발견되는 404를 주기적으로 301로 매핑
31~90일: 완전 회복 확인
- 키워드 순위 회복: 대부분의 키워드가 마이그레이션 전 수준으로 회복해야 함
- 트래픽 100% 회복: 90일 내에 이전 수준으로 회복되지 않으면 구조적 문제가 있을 가능성
- "크롤됨·인덱싱되지 않음" 확인: 새 URL 중 이 상태인 것이 많으면 콘텐츠 품질 또는 내부 링크 문제
자주 묻는 질문 (FAQ)
Q. 301 리다이렉트를 설정하면 PageRank는 100% 전달되나요?
Google의 공식 입장은 "합리적인 양의 PageRank가 301을 통해 전달된다"이며, 정확한 비율은 공개하지 않습니다. 과거 Matt Cutts(전 Google 웹스팸 팀장)가 "약 15% 손실"을 언급했지만, 2019년 이후 Google은 301, 302, 307 모두 동일하게 PageRank를 전달한다고 밝혔습니다. 실무적으로 301을 올바르게 설정하면 90~99%의 권위가 전달된다고 보시면 됩니다. 다만 리다이렉트 체인(A→B→C)이 있으면 각 단계에서 약간씩 손실이 발생합니다.
Q. 기존 도메인의 301을 언제 제거해도 되나요?
절대 제거하지 마세요. 가능하면 영구적으로 유지하는 것이 가장 안전합니다. 최소 1~2년은 유지해야 하며, 그 기간 동안에도 외부 사이트의 백링크가 이전 URL을 가리키고 있으므로 301이 사라지면 해당 백링크의 PageRank가 소멸합니다. 도메인 갱신 비용이 부담된다면 최소 3년간 유지 후, Ahrefs에서 이전 도메인의 백링크가 새 도메인으로 충분히 전환되었는지 확인한 후 제거를 검토하세요.
Q. URL 구조는 유지하고 CMS만 변경하면 (WordPress → Next.js) 301이 필요 없나요?
URL이 100% 동일하게 유지된다면 301은 필요하지 않습니다. 하지만 현실적으로 CMS 변경 시 URL 패턴이 달라지는 경우가 많습니다: WordPress의
/2025/03/post-title/ → Next.js의 /blog/post-title. 또한 WordPress의 미디어 URL(/wp-content/uploads/)도 변경될 수 있습니다. CMS 변경 전에 반드시 모든 URL을 비교하고, 변경된 URL에 대해 301을 설정하세요.Q. 마이그레이션 후 순위가 하락했는데 301 매핑은 올바릅니다. 다른 원인이 있을 수 있나요?
301이 올바르더라도 순위가 하락할 수 있는 원인: (1) 콘텐츠 변경 — 리뉴얼 시 콘텐츠를 축소·재구성하면 기존 키워드 관련성이 감소. (2) 내부 링크 구조 변경 — 새 디자인에서 기존의 풍부한 내부 링크가 줄어든 경우. (3) Core Web Vitals 변화 — 새 사이트가 이전보다 느리면 순위 하락. (4) 구조화 데이터 누락 — 이전 사이트의 JSON-LD, FAQ, Breadcrumb 스키마를 새 사이트에서 빠뜨린 경우. (5) meta 태그 누락 — title, description이 이전 사이트와 달라지거나 빠진 경우.
Q. 네이버(Yeti)도 301을 올바르게 처리하나요?
네이버의 Yeti 크롤러도 301 리다이렉트를 지원합니다. 그러나 Google보다 인덱싱 전환 속도가 느립니다. 네이버 서치 어드바이저(Search Advisor)에서 사이트를 새로 등록하고, 사이트맵을 제출하여 크롤링을 촉진하세요. 또한 네이버는 웹마스터 도구에 "사이트 이전(Site Move)" 기능이 있으므로 반드시 사용하세요. 네이버의 경우 완전한 인덱싱 전환에 2~3개월이 소요될 수 있으므로 인내심이 필요합니다.