왜 hreflang 하나로 글로벌 사이트 절반이 망가지는가
대행사에서 엔터프라이즈 클라이언트 다국어 사이트 다뤄본 사람은 다 안다. hreflang 잘못 박으면 트래픽이 진짜 반토막 난다. 우리가 작년 하반기에 들어왔던 글로벌 B2B SaaS 한 곳도 미국 본사 IT팀에서 hreflang을 일괄 자동화로 깔았는데, 정작 한국 도메인의 자기참조(self-reference) 태그가 빠져 있어서 구글이 한국 페이지를 미국 페이지의 alternate로만 인식하더라. 결과는 뻔하다. 한국어 검색 결과에서 한국어 페이지가 안 뜨고, en-us 페이지가 어색한 자동 번역 스니펫과 함께 노출됐다.
2026년 현재 구글 공식 가이드(support.google.com/webmasters/answer/189077) 기준으로 hreflang은 여전히 “신호(signal)”이지 “지시(directive)”가 아니다. 즉 구글이 무조건 따르는 게 아니라 참고만 한다는 뜻이다. 근데 그 신호조차 어긋나면 구글은 그냥 무시해버린다. 그게 엔터프라이즈에서 가장 무서운 부분이다. 페이지 10만 개에 잘못 박힌 hreflang은 10만 개의 잘못된 신호를 보낸다.
과거에는 hreflang을 sitemap에 넣느냐, HTML head에 넣느냐, HTTP 헤더에 넣느냐 같은 방식 선택이 큰 논쟁이었는데 지금은 그 자체로는 별 의미 없다. 어디에 박든 구글은 똑같이 본다. 진짜 중요한 건 일관성, 자기참조, x-default 처리, 그리고 canonical과의 충돌 방지다.
2026년 hreflang 핵심 변경점과 구글의 최신 입장
솔직히 hreflang 자체 스펙은 거의 안 바뀌었다. 2024년 이전과 비교해도 ISO 639-1 언어 코드 + ISO 3166-1 Alpha 2 지역 코드 조합은 그대로다. 다만 구글 서치 콘솔의 인터내셔널 타기팅(International Targeting) 리포트가 2022년 말 사라진 뒤로, 2026년 시점에서는 URL Inspection 도구와 새로 강화된 Page Indexing 리포트의 alternate URL 섹션이 hreflang 디버깅의 사실상 표준 도구가 됐다.
x-default 처리에 대한 구글의 명확한 입장
x-default는 “언어 선택기 페이지나, 사용자의 언어/지역을 자동 감지해서 리다이렉트하는 페이지”를 위한 값이다. 그냥 영어 페이지에 x-default 박는 게 관행처럼 됐는데, 구글 게리 일리예스(Gary Illyes)가 작년 SMX에서 다시 한번 강조했다. “영어를 default로 쓰면 비영어 사용자 경험이 나빠진다, 가능하면 진짜 selector 페이지를 만들어라”고. 우리도 클라이언트에 권하는 건 /global/이나 / 루트에 IP 기반 감지 + 선택 옵션을 같이 주는 페이지를 두고 거기에 x-default를 거는 방식이다.
JavaScript 렌더링 페이지의 hreflang
2026년에 들어와서 가장 많이 받는 질문이 이거다. Next.js나 Nuxt로 SSR 하는 사이트는 문제가 없는데, CSR로 hreflang을 클라이언트 사이드에서 주입하는 사이트가 의외로 많다. 구글봇이 렌더링은 한다. 근데 hreflang은 첫 HTML 응답에 박혀 있어야 한다. 동적 주입은 인덱싱 큐 지연과 맞물려서 누락되는 경우가 종종 있다. 우리가 봤던 케이스는 1000개 페이지 중 약 14%가 hreflang 누락 상태로 인덱싱돼 있었다.
엔터프라이즈 사이트 hreflang 감사, 한 번도 안 받아봤다면 위험합니다.
terg.kr에서 글로벌 다국어 사이트의 hreflang 무료 진단을 제공합니다. 1000페이지 샘플링 기준 누락/충돌/자기참조 오류를 리포트로 받아보세요. 무료 진단 신청하기
구현 방식 3가지 – 우리가 실제 쓰는 기준
구글 공식 문서는 세 가지 방식을 동등하게 인정한다. HTML head 태그, HTTP 헤더, XML sitemap. 근데 실무에서는 사이트 규모와 CMS 종류에 따라 답이 갈린다.
방식 1 – HTML head link 태그
가장 직관적이고 디버깅도 쉽다. 페이지 수가 만 개 이하의 다국어 사이트라면 그냥 이 방식 추천한다. 다만 페이지마다 모든 언어 버전의 link 태그를 다 박아야 한다는 점에서 페이지 수가 늘어나면 HTML 크기가 부담된다. 5개 언어면 5줄, 20개 언어면 20줄씩 모든 페이지에 추가된다.
<link rel="alternate" hreflang="ko-kr" href="https://example.com/ko/product" />
<link rel="alternate" hreflang="en-us" href="https://example.com/en/product" />
<link rel="alternate" hreflang="ja-jp" href="https://example.com/ja/product" />
<link rel="alternate" hreflang="x-default" href="https://example.com/product" />
방식 2 – HTTP 헤더 (PDF, 이미지 등 non-HTML)
이건 거의 안 쓴다. 솔직히. PDF 카탈로그를 언어별로 따로 두는 B2B 제조업 클라이언트한테만 가끔 쓴다. Apache라면 .htaccess에서, Nginx는 add_header로 박는다. 근데 운영 부담이 커서 권하지 않는다.
방식 3 – XML sitemap (엔터프라이즈 추천)
페이지 수가 5만 개 넘어가면 무조건 sitemap 방식으로 가야 한다. HTML head 방식은 모든 페이지를 재배포해야 하지만, sitemap은 별도 파일이라 SEO 팀이 독립적으로 관리할 수 있다. 우리가 글로벌 이커머스 클라이언트에서 쓰는 방식이 이거다. 7만 페이지를 sitemap 인덱스 + 언어별 sitemap으로 쪼개서 관리한다.
<url>
<loc>https://example.com/ko/product</loc>
<xhtml:link rel="alternate" hreflang="ko-kr" href="https://example.com/ko/product" />
<xhtml:link rel="alternate" hreflang="en-us" href="https://example.com/en/product" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/product" />
</url>
엔터프라이즈에서 실제로 무너지는 5가지 함정
함정 1 – 자기참조 누락
구글 공식 가이드에 명시돼 있다. “각 페이지는 자기 자신을 가리키는 hreflang을 반드시 포함해야 한다.” 그런데 자동화 스크립트로 hreflang 박을 때 자기참조를 빼먹는 경우가 정말 많다. 우리가 들어간 클라이언트의 약 40% 사이트에서 자기참조 누락이 발견됐다.
함정 2 – 양방향 매칭 깨짐 (Return tag missing)
A페이지가 B페이지를 alternate로 가리키면, B페이지도 반드시 A페이지를 alternate로 가리켜야 한다. 한쪽만 박혀 있으면 구글이 무시한다. 이게 깨지는 가장 흔한 이유는 한 언어 버전이 다른 언어보다 페이지가 적을 때다. 예를 들어 영어 사이트엔 /about-team이 있는데 한국어 사이트엔 그게 없으면, 그 페이지의 hreflang은 어떻게 박을지 정책 정해놔야 한다.
함정 3 – canonical과 hreflang 충돌
이게 진짜 자주 본다. 한국어 페이지의 canonical이 영어 페이지를 가리키도록 박혀 있는데, hreflang은 한국어로 자기참조하는 케이스. 구글 입장에서는 “이 페이지는 영어 페이지의 복제다(canonical)”라고 말하면서 동시에 “이 페이지는 한국어 버전이다(hreflang)”라고 모순된 신호를 보내는 거다. 결과는 둘 다 무시.
함정 4 – 잘못된 언어/지역 코드
en-uk는 없다. en-gb가 맞다. zh-cn은 ISO 표준상 맞지만, 구글은 zh-Hans(간체)와 zh-Hant(번체) 같은 스크립트 서브태그도 받는다. 한국은 ko-kr이지만 사실 ko만 써도 충분한 경우가 많다. 지역 타기팅이 명확히 필요한 게 아니면 언어 코드만 쓰는 게 더 안전하다.
함정 5 – 리다이렉트 URL을 hreflang에 박기
href에 들어가는 URL은 200 응답을 주는 최종 URL이어야 한다. 301/302로 리다이렉트되는 URL을 박으면 구글이 신호를 약하게 받아들이거나 무시한다. 사이트 리뉴얼 후 hreflang 매핑 안 바꿔서 망가지는 케이스가 정말 흔하다.
엔터프라이즈 구현 워크플로우 – 6단계
우리가 글로벌 클라이언트한테 적용하는 표준 프로세스다. 페이지 수가 1만 개 넘는 사이트는 무조건 이 순서대로 가야 한다.
1단계 – URL 매핑 마스터 시트 작성
가장 지루하지만 가장 중요한 단계다. 모든 URL을 언어별로 매핑하는 시트를 만든다. 한국어 URL이 영어 URL과 어떻게 대응되는지, 한쪽에만 있는 페이지는 어떻게 처리할지, x-default는 어디로 보낼지를 결정한다. 우리는 보통 Google Sheets에 컬럼별로 정리하고, BigQuery에 적재해서 자동화 생성기랑 연동한다.
2단계 – canonical 정책 먼저 정리
hreflang 박기 전에 canonical부터 깨끗하게 정리해야 한다. 같은 언어 내에서 페이지 정규화가 안 된 상태에서 hreflang을 박으면 충돌이 폭증한다. 우리가 한 클라이언트는 hreflang 작업 시작 전에 3주 동안 canonical만 정리했다.
3단계 – sitemap 또는 head 방식 결정
위에서 설명한 기준대로 선택한다. 페이지 5만 이상이면 sitemap, 그 이하면 head 추천.
4단계 – 자동 생성 스크립트 배포
수동으로 박지 마라. CMS hook이든 빌드 타임 스크립트든, URL 매핑 시트를 단일 진실 원천(SSOT)으로 두고 거기서 hreflang을 자동 생성해야 한다. 사람이 직접 박으면 100% 깨진다.
5단계 – 자기참조와 양방향 매칭 검증
Screaming Frog, Sitebulb, 또는 Ahrefs Site Audit으로 크롤링 검증. 우리는 자체 만든 Python 스크립트로 sitemap 파싱해서 매칭 매트릭스 검증한다. 100% 매칭이 나올 때까지 배포 안 한다.
6단계 – 배포 후 4주간 모니터링
구글이 hreflang 신호를 처리하는 데 시간이 걸린다. 배포 직후 며칠은 오히려 트래픽이 빠질 수도 있다. 4주 모니터링하면서 URL Inspection으로 샘플 페이지의 alternate 인식 상태를 확인하고, 국가별 검색 결과를 직접 확인한다.
모니터링 도구와 디버깅 – 2026년 기준
서치 콘솔 International Targeting 리포트가 사라진 후 hreflang 디버깅이 좀 까다로워졌다. 지금 우리가 쓰는 조합은 이거다.
URL Inspection 도구
가장 정확한 단일 페이지 디버깅 도구다. “Indexed, alternate page with proper canonical tag” 같은 상태 메시지를 볼 수 있다. 다만 페이지 하나씩 확인해야 해서 엔터프라이즈에는 한계가 있다.
Screaming Frog hreflang 리포트
크롤링 후 hreflang 탭에서 누락, 깨진 링크, 자기참조 누락, 양방향 매칭 깨짐을 한 번에 볼 수 있다. 페이지 50만까지는 무난하게 돈다. 우리가 가장 자주 쓰는 도구다.
로그 파일 분석
구글봇이 실제로 어떤 URL을 크롤링하는지, 다국어 URL이 적절히 분배돼서 크롤링되는지 보려면 로그 분석이 필요하다. 한국어 페이지만 자주 크롤링하고 일본어 페이지는 거의 안 도는 패턴이 보이면 hreflang 신호가 한쪽으로 치우쳤다는 뜻이다.
실제 사례 – 글로벌 B2B SaaS의 hreflang 재구축
작년에 들어온 글로벌 SaaS 한 곳 얘기를 풀어보자. 미국 본사가 영어 단일 사이트로 시작해서 7개국 서브디렉토리 구조로 확장한 케이스다(/en/, /ko/, /ja/, /de/, /fr/, /es/, /pt-br/). 페이지 수는 약 1만 2천 개. 들어왔을 때 상태는 이랬다.
초기 진단 결과
- 자기참조 누락 페이지 – 약 4,300개 (36%)
- 양방향 매칭 깨짐 – 약 2,800개 (23%)
- canonical-hreflang 충돌 – 약 900개 (7.5%)
- 리다이렉트 URL을 hreflang에 박은 케이스 – 약 1,100개 (9.1%)
- x-default 누락 – 전체 페이지
한국어 페이지의 구글 한국 검색 점유율이 18%대로 떨어져 있었다. 영어 페이지가 한국어 쿼리에서 노출되는 cannibalization이 심각했다. 우리가 들어가서 한 일은 단순했다. URL 매핑 시트 다시 짜고, canonical 정리하고, sitemap 방식으로 통일하고, 자동 생성 스크립트 배포. 6주 걸렸다.
3개월 후 한국어 페이지 점유율이 41%로 회복됐고, 일본어/독일어 페이지도 비슷한 회복 곡선을 그렸다. 글로벌 organic 트래픽이 전체적으로 약 28% 늘었다. 솔직히 hreflang 하나만 정리한 게 아니라 canonical도 같이 정리한 덕분이 크다. 둘은 떼놓고 볼 수 없는 문제다.
흔한 오해 정리
오해 1 – hreflang이 랭킹 신호다
아니다. hreflang은 랭킹에 직접 영향을 주지 않는다. 구글이 “적절한 사용자에게 적절한 언어 버전을 보여주는” 데만 쓴다. 다만 잘못 박혀서 잘못된 페이지가 노출되면 결과적으로 트래픽이 빠지니까 랭킹에 영향 있는 것처럼 보일 뿐이다.
오해 2 – 영어 페이지만 있어도 hreflang 필요하다
필요 없다. 단일 언어 사이트는 hreflang 안 박아도 된다. 다만 영국/미국/호주 같이 같은 언어 다른 지역을 타기팅하면 en-us, en-gb, en-au 식으로 박는 게 도움 된다.
오해 3 – hreflang이 빙(Bing)이나 다른 검색엔진에도 통한다
빙은 hreflang을 공식적으로 지원하지 않는다. 빙은 meta language 태그와 IP 지역 기반 신호를 쓴다. 얀덱스(Yandex)는 hreflang을 부분 지원한다. 즉 hreflang은 구글, 야후 일부를 위한 신호다.
엔터프라이즈 다국어 사이트, hreflang부터 단단하게 잡고 가시죠.
terg.kr은 구글 광고 대행과 SEO 컨설팅을 함께 운영하는 디지털 마케팅 회사입니다. 글로벌 진출 중인 한국 기업과 한국 진출 중인 글로벌 기업의 hreflang 구조 진단, sitemap 자동화 구축, 다국어 콘텐츠 전략까지 한 번에 해결합니다.
지금 상담 신청하시면 영업일 기준 1일 내에 담당 컨설턴트가 직접 연락드립니다.
자주 묻는 질문
Q1. hreflang을 HTML head, sitemap, HTTP 헤더 중 어디에 박는 게 가장 좋나요?
구글은 세 방식을 동등하게 처리합니다. 다만 실무에서는 페이지 5만 개 이상이면 sitemap 방식, 그 이하면 HTML head 방식이 운영 효율이 좋습니다. HTTP 헤더는 PDF 같은 non-HTML 콘텐츠가 아니면 권하지 않습니다. 어디에 박든 동일 페이지에 중복으로 박는 건 안 됩니다.
Q2. x-default에는 어떤 페이지를 지정해야 하나요?
구글의 공식 권장은 “언어 선택기 페이지나 사용자 언어를 자동 감지해 리다이렉트하는 페이지”입니다. 그냥 영어 페이지를 x-default로 박는 관행은 비영어 사용자에게 불리합니다. 가능하면 루트 도메인에 IP 기반 감지와 수동 언어 선택 옵션이 있는 페이지를 두고 거기에 x-default를 거는 게 가장 안전합니다.
Q3. 한국 시장만 타기팅하는데 ko-kr과 ko 중 뭐를 써야 하나요?
지역 타기팅이 명확하게 필요한 게 아니라면 ko만 쓰는 걸 추천합니다. ko-kr로 박으면 다른 한국어권(거의 없지만) 검색에서 제외될 가능성이 있습니다. 한국어 콘텐츠가 한국 시장에만 의미 있다면 ko-kr이 맞지만, 일반적으론 ko가 더 유연합니다.
Q4. canonical과 hreflang이 충돌하면 어떻게 되나요?
구글이 둘 다 무시할 가능성이 높습니다. hreflang 그룹 안의 모든 페이지는 각자 자기 자신을 canonical로 가리켜야 합니다. 한국어 페이지의 canonical이 영어 페이지를 가리키면, 구글은 “이 페이지는 영어 페이지의 복제다”라고 받아들이면서 hreflang 신호를 무효화합니다. 다국어 사이트에서 가장 흔하면서 가장 치명적인 실수입니다.
Q5. hreflang 변경 후 효과는 언제부터 나타나나요?
구글이 모든 페이지를 재크롤링하고 신호를 처리하는 데 시간이 걸립니다. 작은 사이트는 2~4주, 엔터프라이즈 사이트는 6~12주 정도 봐야 합니다. 배포 직후 1~2주는 오히려 트래픽이 일시적으로 흔들릴 수 있으니 조급해하지 말고 4주 후 데이터로 판단하는 게 좋습니다.

















