언어를 나누기로 했으면 먼저 주소를 나눕니다
Google 문서는 쿠키나 브라우저 설정으로 페이지의 콘텐츠 언어를 조정하는 방법보다 주소를 언어별로 달리 할 것을 권장합니다.
감지된 국가나 선호 언어에 따라 다른 콘텐츠를 돌려주는 페이지를 언어 적응형 페이지라고 부릅니다. 같은 문서는 이런 페이지에서 Google이 일부 언어의 콘텐츠를 크롤링하거나 색인 생성하거나 순위를 지정하지 못할 수도 있다고 적습니다. Googlebot 크롤러가 기본적으로 미국에 위치한 것으로 감지되는 IP 주소를 쓰고, 요청 헤더에 Accept-Language를 설정하지 않은 채 요청을 보내기 때문입니다. 그래서 준비의 첫 칸은 주소입니다. 수집과 색인이 갈리는 단계는 검색엔진은 사이트를 어떻게 발견하고 색인하나요에 있습니다.
주소 구조는 네 가지 가운데 고릅니다
구조 이름과 예시 주소, 걸림돌은 모두 Google 문서의 표에 적힌 것입니다.
| 주소 구조 | 예시 주소 | 문서가 적어 둔 걸림돌 |
|---|---|---|
| 국가별 도메인 | example.de | 비용이 많이 들고 추가 인프라가 필요하며 단일 국가만 타겟팅할 수 있다 |
| 하위 도메인 | de.example.com | 사용자가 de가 언어인지 국가인지 확실하지 않을 수 있다 |
| 하위 디렉터리 | example.com/de/ | 서버 위치가 하나이고 사이트를 분리하기 어렵다 |
| URL 매개변수 | site.com?loc=de | 권장하지 않는 방식이고 주소로 가르기가 어렵다 |
하위 도메인과 하위 디렉터리는 설정이 간편하다는 장점도 함께 적혀 있습니다. 어느 쪽을 골라도 IP 분석을 바탕으로 콘텐츠를 조정하면 안 됩니다. 앞에서 적은 크롤링 위치 문제가 그대로 적용됩니다.
다국어와 다지역은 서로 다른 결정입니다
문서는 다국어 웹사이트를 두 개 이상의 언어로 콘텐츠를 제공하는 사이트로, 다지역 웹사이트를 명시적으로 여러 국가의 사용자를 대상으로 하는 사이트로 나눕니다. 한국어와 영어만 나누는 것이면 앞쪽이고, 둘을 겸하는 사이트도 있습니다.
국가까지 겨냥하는 지역 타겟팅은 대상 국가에서 순위는 높아지지만 다른 지역이나 언어에서의 실적이 저조해질 수 있다고 적혀 있습니다. 판단에 쓰이는 신호로는 국가 코드 최상위 도메인, hreflang, 서버 IP 주소를 통한 위치, 현지 주소와 전화번호 같은 기타 신호가 올라 있습니다. 반대로 geo.position이나 distribution 같은 위치 meta 태그와 지역 타겟팅 HTML 속성은 무시한다고 적혀 있습니다.
같은 언어의 비슷한 콘텐츠가 서로 다른 주소에 함께 있으면 기본 버전을 고르고 rel="canonical" 요소와 hreflang 태그를 함께 씁니다. canonical 표기는 canonical 태그 설정법과 중복 URL 정리에 있습니다.
알리는 방법은 세 가지 중 하나만 고릅니다
- HTML
head의rel="alternate"링크 요소. 사이트맵이 없거나 응답 헤더를 지정할 수 없을 때 유용합니다. - 응답의
Link헤더. - 사이트맵의 하위 요소. 적는 규칙과 흔한 오류는 sitemap.xml 오류 원인과 해결 방법에 있습니다.
문서는 세 가지가 Google 관점에서 동일하므로 편한 것을 고르면 된다고 적습니다. 동시에 쓸 수도 있지만 검색에는 도움이 되지 않고 세 구현을 관리하는 것이 훨씬 더 어려울 수 있다고 덧붙입니다.
로봇 제외 규칙도 같은 자리에서 맞춥니다. 각 언어에서 robots meta 태그와 robots.txt 규칙이 동일해야 한다고 적혀 있습니다. 두 표시의 차이는 noindex와 robots.txt 차이에 있습니다.
준비 양식: 주소마다 짝을 전부 적어 둡니다
한국어는 example.com/ko/, 영어는 example.com/en/, 언어 선택기는 example.com/인 가상의 사이트로 채워 보면 이렇습니다.
- 주소를 한 줄씩 적고 각 줄에 그 주소가 겨냥하는 언어 코드를 붙입니다. 코드는 ISO 639-1 언어 코드이고, 필요하면 ISO 3166-1 Alpha 2 지역 코드를 대시로 덧붙입니다. 국가 코드만 지정할 수는 없습니다.
- 줄마다 그 주소 자신을 포함해 모든 버전을 나열합니다. 링크 집합은 페이지의 모든 버전에서 동일합니다.
- 주소는 전송 방법을 포함한 정규화된 형태로 적습니다.
/foo나//example.com/foo가 아니라https://example.com/foo입니다. - 두 줄이 서로를 가리키는지 확인합니다. 한쪽만 가리키면 태그가 무시됩니다.
- 선택기 주소에는
x-default를 붙입니다. 브라우저 설정과 일치하는 언어가 없는 사용자의 대체 페이지를 지정하는 값입니다.
양식 없이 태그부터 넣으면 어느 줄이 빠졌는지 나중에 되짚을 근거가 남지 않습니다.
자주 나오는 실수와 여기까지로 알 수 없는 것
- 반환 링크 누락. 문서가 가장 자주 발생하는 실수로 꼽는 항목입니다. 연결이 양방향이 아니면 설정이 무시되거나 잘못 해석될 수 있습니다.
- 예약된 지역 코드. 다른 용도로 예약된 것으로 표시된 코드를 쓰면 그 부분을 무시합니다. 문서는
EU·UN·UK를 예로 듭니다. - 자동 리디렉션. 한 언어 버전에서 다른 언어 버전으로 사용자를 자동으로 리디렉션하지 말라고 적혀 있습니다. 사용자와 검색엔진이 사이트의 모든 버전을 보지 못하게 되기 때문입니다. 대신 다른 언어 버전으로 가는 하이퍼링크를 두라고 권합니다.
양식이 양방향으로 닫히고 모든 주소가 정규화되고 선택기 주소에 x-default가 붙으면 준비는 끝난 것으로 봅니다. 그 뒤는 확인되지 않습니다. 지역 타겟팅이 항상 정확하지는 않아 의도하지 않게 다른 버전을 방문하는 사용자가 있을 수 있고, 소개된 디버깅 도구들은 Google에서 관리하거나 검사하지 않는다고 적혀 있습니다.