블로그 › IT

구글 색인 생성 안됨, 알고보니 hreflang 슬래시 하나가 원인이었다

IT 2026-09-24 · 읽기 3분
이 글의 언어 KOJAEN

이 블로그는 한국어·일본어·영어 세 언어로 운영하고 있다. 그래서 글을 하나 올리면 세 개의 URL이 생기는데(예: /ko/글제목/, /ja/글제목/, /en/글제목/), 이 셋이 서로 “같은 글의 다른 언어판”이라는 걸 구글에 알려주는 태그가 따로 있다. 이걸 hreflang이라고 부른다.

구글은 내 사이트를 “검색 결과에 올려도 되는 페이지”로 판단하면 색인(index)에 넣는다. 색인에 안 들어가면 아무리 글을 써도 검색으로는 절대 안 들어온다. 그래서 Search Console(구글이 내 사이트를 어떻게 보고 있는지 확인하는 도구)을 가끔 열어보는데, 며칠 전에 들어갔더니 “실패함” 딱지가 붙은 항목이 44개나 떠 있었다.

카테고리가 다섯 개로 나뉘어 있었는데, 이름만 봐서는 뭐가 진짜 문제인지 하나도 감이 안 왔다.

  • 적절한 표준 태그가 포함된 대체 페이지 — 20개
  • 리디렉션이 포함된 페이지 — 13개
  • 사용자가 선택한 표준이 없는 중복 페이지 — 5개
  • 크롤링됨 - 현재 색인이 생성되지 않음 — 4개
  • 중복 페이지, Google에서 사용자와 다른 표준을 선택함 — 2개

44개. 처음엔 사이트가 통째로 문제 있는 줄 알았다.

근데 하나씩 URL을 까보니까 얘기가 달랐다. “적절한 표준 태그가 포함된 대체 페이지”랑 “리디렉션이 포함된 페이지”는 대부분 www.가 붙었거나 http://로 시작하는 주소들이었다. 이런 건 원래 진짜 주소(https://glitch-apple.com/...)로 자동으로 넘어가게(리다이렉트) 해뒀고, 그 진짜 주소만 색인되면 그걸로 정상이다. 구글이 “실패”라고 써놔서 놀랐을 뿐이지, 33개(20+13)는 그냥 원래 정상 동작이었던 거다.

진짜 문제는 나머지 중에 섞여 있었다. “사용자가 선택한 표준이 없는 중복 페이지” 목록에 이런 주소가 있었다.

https://glitch-apple.com/ko//
https://glitch-apple.com/ja//

슬래시가 두 개다. 이런 주소를 만든 적이 없는데 구글이 대체 어디서 찾아낸 건지 한참 봤다.

답은 사이트 자체의 <head> 안에 있었다. 홈 화면 소스를 열어보니:

<link rel="alternate" hreflang="ja" href="https://glitch-apple.com/ja//">
<link rel="alternate" hreflang="en" href="https://glitch-apple.com/en//">

내가 직접 “일본어판은 여기 있다”고 알려주는 태그 안에 슬래시가 두 번 들어가 있었다. 구글은 이 태그를 그대로 믿고 따라갔다가, 존재하지도 않는 이중슬래시 주소를 “발견”하고, 어디로 리다이렉트되는지도 확인하고, 결국 “표준이 불분명한 중복 페이지”로 분류해버린 거다. 내가 만든 태그가 구글을 이상한 데로 데려간 셈이다.

hreflang 태그가 실제로 가리키던 슬래시 두 개짜리 주소와, 고친 뒤의 정상 주소 비교

원인은 코드 한 줄이었다.

url: `/${l}/${suffix}/`,

경로 뒤에 뭐가 붙는 페이지(/ja/blog/ 같은)는 멀쩡한데, 홈 화면처럼 뒤에 아무것도 안 붙는 페이지는 이 suffix 자리가 빈 문자열이 되면서 /ja/ + “ + /가 이어져 /ja//가 됐다. 딱 한/일/영 홈 화면 세 개만 여기 걸려 있었다.

url: suffix ? `/${l}/${suffix}/` : `/${l}/`,

빈 문자열일 땐 그냥 슬래시 하나만 붙이게 바꿨다. 그게 끝이었다.

고친 코드 diff — url 생성 부분에 삼항연산자 한 줄 추가

배포하고 다시 소스를 열어보니 hreflang 값이 전부 정상으로 나왔다. 이제 구글이 다시 크롤링하면 저 이중슬래시 주소들도 알아서 정리될 거다.

이번에 느낀 건, “실패함”이라는 말을 곧이곧대로 믿으면 안 된다는 거였다. 44개 중에 진짜 내가 고쳐야 했던 건 두어 개뿐이었고, 나머지는 원래 정상이거나 코드랑 상관없는 문제(새로 산 도메인이라 구글이 아직 신뢰를 덜 쌓은 것)였다. 다 똑같이 “실패” 딱지 붙여놓으니까, 직접 하나하나 열어보기 전까진 뭐가 진짜인지 구분할 방법이 없었다.

#SEO#hreflang#Search Console#Astro

댓글