용어집
SEO

Hreflang

hreflang은 같은 콘텐츠의 언어별·지역별 버전을 구글에 알려, 사용자의 언어 설정과 위치에 맞는 버전을 검색 결과에 노출시키는 속성입니다. 예를 들어 영국 사용자에게는 en-gb 페이지를, 미국 사용자에게는 en-us 페이지를 보여주도록 안내합니다.

  • hreflang은 동일 콘텐츠의 언어·지역별 버전을 구글에 알려, 사용자에게 가장 적합한 버전을 검색 결과에 띄우는 속성입니다.
  • 구현 방식은 HTML link 태그, HTTP 헤더, XML 사이트맵 세 가지이며, 페이지 성격에 따라 하나를 선택합니다.
  • 언어 코드는 ISO 639-1, 지역 코드는 ISO 3166-1 Alpha 2 형식을 따르며, 지역 코드만 단독으로 쓰면 무효 처리됩니다.
  • 가장 흔한 실수는 상호 참조(return link) 누락으로, X가 Y를 가리키면 Y도 반드시 X를 가리켜야 합니다.
  • 어떤 언어에도 맞지 않는 사용자를 위한 기본 버전은 x-default 값으로 지정합니다.

개요

hreflang은 같은 콘텐츠의 언어별·지역별 버전이 여러 개 있을 때, 각 버전이 어떤 언어·지역 사용자를 위한 것인지 구글에 알려주는 속성입니다. 구글은 이 정보를 바탕으로 검색 사용자의 언어 설정과 위치에 맞는 버전을 결과로 보여줍니다. 예를 들어 영국 영어(en-gb), 미국 영어(en-us), 독일어(de) 버전이 각각 존재할 때, hreflang을 통해 영국 사용자에게는 en-gb 페이지가 노출되도록 안내할 수 있습니다.

다국어·다지역 사이트에서 hreflang이 없으면 구글이 잘못된 언어 버전을 노출하거나, 거의 동일한 여러 버전을 중복 콘텐츠로 인식해 한 버전만 색인할 수 있습니다. hreflang은 이런 버전들이 중복이 아니라 서로 다른 대상을 위한 대체본임을 명확히 알려주는 신호입니다.

구현 방식 세 가지

구글은 hreflang을 세 가지 방법으로 지정할 수 있도록 지원합니다. 한 페이지에 대해 한 가지 방식만 사용하며, 세 방식 모두에서 자기 자신을 포함한 모든 버전을 나열해야 합니다.

1. HTML link 태그

각 페이지의 <head> 안에 버전마다 하나씩 link 요소를 넣습니다. 일반 HTML 페이지에 가장 널리 쓰이는 방식입니다.

<link rel="alternate" hreflang="en-gb"
      href="https://en-gb.example.com/page.html" />
<link rel="alternate" hreflang="en-us"
      href="https://en-us.example.com/page.html" />
<link rel="alternate" hreflang="de"
      href="https://de.example.com/page.html" />
<link rel="alternate" hreflang="x-default"
      href="https://www.example.com/" />

2. HTTP 헤더

PDF처럼 HTML이 아닌 파일에는 <head>가 없으므로 HTTP 응답 헤더에 Link 항목으로 지정합니다.

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

3. XML 사이트맵

페이지 수가 많을 때는 사이트맵에 xhtml 네임스페이스를 선언하고 각 url 항목 아래에 xhtml:link 요소로 버전을 나열합니다. HTML을 수정하지 않고 한곳에서 관리할 수 있습니다.

<url>
  <loc>https://www.example.com/english/page.html</loc>
  <xhtml:link rel="alternate" hreflang="en"
              href="https://www.example.com/english/page.html"/>
  <xhtml:link rel="alternate" hreflang="de"
              href="https://www.example.de/deutsch/page.html"/>
</url>

언어·지역 코드 형식

코드는 언어-지역 형식을 따릅니다. 언어는 ISO 639-1, 지역은 ISO 3166-1 Alpha 2 코드를 사용합니다.

  • 언어만 단독 사용 가능: de, en
  • 언어+지역: en-gb, de-ch
  • 문자 체계 지정 가능: zh-Hant, zh-Hans-US
  • 지역 코드만 단독 사용은 무효: 예를 들어 독일을 노리며 de 대신 de-be가 아닌 지역 코드만 쓰면 인식되지 않습니다.

흔한 오류

구글 검색 센터 문서와 업계 가이드가 공통으로 지적하는 대표적 오류는 다음과 같습니다.

  • 상호 참조(return link) 누락: 페이지 X가 Y를 대체본으로 가리키면 Y도 반드시 X를 가리켜야 합니다. 한쪽만 참조하면 해당 hreflang 표기가 무시될 수 있습니다.
  • 자기 참조 누락: 각 버전은 자기 자신을 가리키는 hreflang도 포함해야 합니다. self-reference가 빠지면 관계 집합이 불완전해집니다.
  • x-default 누락 또는 중복: 어떤 언어에도 매칭되지 않는 사용자를 위한 기본 버전(국가 선택 페이지 등)은 x-default로 지정하며, 한 페이지에 x-default는 하나만 둡니다. 여러 개면 모두 무시됩니다.
  • 비표준·잘못된 코드: es-419, EU, UK처럼 ISO 표준을 벗어난 코드는 무시됩니다.
  • 404·리다이렉트 대상: hreflang이 가리키는 URL은 모두 200(OK)을 반환하고 색인 가능해야 합니다. 404나 리다이렉트로 연결되면 신호가 무시될 수 있습니다.
  • canonical과의 불일치: canonical이 hreflang 세트와 다른 URL을 가리키면 상충 신호가 되어 구글이 의도와 다른 URL을 선택할 수 있습니다.

근거

위 구현 방식과 코드 형식, 오류 사항은 구글 검색 센터의 공식 문서 "Localized Versions of your Pages"에 명시된 내용입니다. 이 문서는 "페이지 X가 페이지 Y를 가리키면, 페이지 Y는 반드시 페이지 X를 가리켜야 한다"고 상호 참조를 명확히 규정하며, 지역 코드 단독 사용은 불가하다고 안내합니다. x-default는 구글이 2013년 블로그("Introducing x-default hreflang")에서 국제 랜딩 페이지용으로 도입한 값입니다.

실행 체크리스트

  • 모든 언어·지역 버전을 빠짐없이 나열했는지, 그 안에 자기 자신도 포함했는지 확인합니다.
  • 모든 버전이 서로를 양방향으로 참조(return link)하는지 점검합니다.
  • 언어는 ISO 639-1, 지역은 ISO 3166-1 Alpha 2 형식인지, 지역 코드를 단독으로 쓰지 않았는지 검증합니다.
  • 어떤 언어에도 맞지 않는 사용자를 위한 x-default를 정확히 하나 지정합니다.
  • hreflang이 가리키는 모든 URL이 200을 반환하고 색인 가능한지, canonical과 충돌하지 않는지 확인합니다.
  • 구현 방식(HTML link·HTTP 헤더·사이트맵)은 페이지당 하나로 통일합니다.

참고·출처

관련 용어