SEO
SEO 최적화 점검 — 블스피가 직접 겪은 색인 사고 7가지
업데이트
요약
SEO 최적화(검색엔진 최적화)의 첫 단계는 검색엔진이 페이지를 수집하고 정본으로 인식하게 만드는 기술 점검입니다. 블스피는 2026년 8~9월 사이에 하위 페이지의 canonical이 모두 홈을 가리키는 문제, 사이트맵·robots.txt가 다른 도메인을 가리키는 문제, robots.txt의 /_next/ 차단, 공개 페이지 404, 사이트맵 인덱스의 빈 캐시, 사이트맵 504, 그리고 사이트맵에 제출한 키워드 페이지 342개가 모두 noindex로 렌더링되던 문제를 겪었습니다. 모두 화면에서는 보이지 않았고, 크롤러가 받은 응답을 확인해서야 드러났습니다. 콘텐츠를 늘리기 전에 이 목록부터 점검할 것을 권합니다.
핵심 사실
- 1루트 레이아웃의 canonical이 하위 페이지에 상속되면 모든 페이지가 홈을 정본으로 지정해 색인에서 빠질 수 있다.
- 2네이버: 사이트맵·RSS 안 링크의 호스트가 등록 사이트와 다르면 수집하지 않는다.
- 3네이버·구글 모두 robots.txt로 JS·CSS를 막으면 페이지를 제대로 렌더링하지 못할 수 있다고 안내한다.
- 4구글: robots.txt는 검색 노출을 막는 수단이 아니다. 노출을 막으려면 noindex나 비밀번호를 쓴다.
- 5블스피 키워드 페이지 342개는 슬러그 이중 인코딩 때문에 사이트맵에 제출된 URL 전부가 noindex 페이지로 렌더링되고 있었다(2026-09-24 발견).
- 6블스피 측정(2026-08): "SEO최적화" 블로그 영역 진입선 48.2, 1페이지 블로그 활동 비율 67%.
왜 남의 사고 목록이 쓸모 있나
"SEO 최적화 작업"을 맡기면 보통 제목 태그, 키워드 배치, 콘텐츠 보강 같은 보이는 작업이 먼저 나옵니다. 하지만 블스피가 실제로 유입을 잃은 원인은 대부분 보이지 않는 곳에 있었습니다. 브라우저로 열면 멀쩡한 페이지가 크롤러에게는 404이거나, 정본이 다른 URL이거나, noindex였습니다. 아래 일곱 가지는 이 사이트의 코드 주석과 수정 이력에 남아 있는 실제 사례이고, 같은 구조(Next.js 같은 프레임워크, 별도 백엔드, 자동 생성 페이지)를 쓰는 사이트라면 그대로 재현될 수 있습니다.
블스피의 사고 7가지
| 사고 | 증상 | 원인 | 고친 방법 |
|---|---|---|---|
| 1. canonical 상속 | 하위 페이지가 색인에서 빠짐 | 루트 레이아웃의 canonical(홈)이 모든 페이지에 상속 | 페이지마다 자기 주소를 canonical로 명시 |
| 2. 다른 도메인 | 사이트맵 전체가 무효 | 사이트맵·robots가 배포 서비스 기본 도메인을 가리킴 | 도메인을 한 곳(SITE_URL)에서만 정의 |
| 3. /_next/ 차단 | 빈 화면으로 판단될 위험 | robots.txt가 렌더링용 JS·CSS 경로를 막음 | 차단 해제, 재발 방지 주석 |
| 4. 공개 페이지 404 | 홈 포함 8개 경로가 나흘간 404 | 새로 만든 서버 페이지 파일이 커밋에서 누락 | 파일 복구, 사이트맵은 그동안 404 URL 제출 |
| 5. 빈 사이트맵 인덱스 | 키워드 페이지가 사이트맵에서 사라짐 | 페이지 0개일 때 만든 응답이 캐시에 굳음 | 청크를 최소 1개는 항상 싣도록 변경 |
| 6. 사이트맵 504 | 서치콘솔 "가져올 수 없음" | 유휴 백엔드가 깨어나는 동안 응답 한도 초과 | 백엔드 요청 6초 상한, 초과 시 빈 값 |
| 7. noindex 껍데기 | 제출한 342개 URL 전부 색인 거부 | 슬러그를 두 번 인코딩해 데이터 조회가 404 | 디코딩 후 재인코딩 한 곳으로 통일 |
출처: 블스피 lib/seo.ts·app/robots.ts·app/sitemap.ts 주석과 2026년 8~9월 수정 이력.
가장 비쌌던 사고 — 342개 noindex 껍데기
블스피는 키워드마다 측정 데이터를 담은 페이지를 만들어 사이트맵에 실었습니다. 그런데 프레임워크가 주소의 슬러그를 이미 인코딩된 상태로 넘겨주는데 코드가 한 번 더 인코딩하는 바람에 "%"가 "%25"가 되었고, 백엔드는 그런 키워드가 없다며 404를 돌려줬습니다. 데이터가 없으면 페이지는 "키워드를 찾을 수 없습니다"와 함께 noindex를 내보내도록 되어 있었습니다.
결과적으로 사이트맵에 실어 검색엔진에 제출한 URL이 한 장도 빠짐없이 색인 거부 페이지였습니다. 한 달 넘게 발행돼 있던 페이지도 같았습니다. 그동안 난이도 계산을 고치고, 사이트맵을 나누고, RSS를 제출했지만 정작 그 URL들은 한 번도 내용을 보여준 적이 없었습니다. 브라우저 테스트는 다른 경로로 들어가 정상으로 보였기 때문에, 백엔드 접근 로그에 찍힌 "%25EB…"를 보고서야 알아챘습니다.
공식 문서가 말하는 같은 원칙
- ·대표 주소: 네이버는 같은 내용을 여러 URL로 내면 중복 판정을 받는다며 대표 주소로 301 리다이렉트하거나 rel="canonical"을 쓰라고 한다. 구글은 리디렉션과 canonical을 강한 신호, 사이트맵 포함을 약한 신호로 분류한다.
- ·피드의 도메인: 네이버는 사이트맵·RSS 안 URL이 소유확인 도메인과 같아야 제출할 수 있고, 상대경로나 다른 호스트 링크는 수집하지 않는다고 명시한다. 구글도 사이트맵에 정규화된 절대 URL을 쓰라고 한다.
- ·리소스 차단: 네이버는 JS·CSS 경로를 웹 문서와 같은 규칙으로 맞추거나 허용하라고 하고, 구글도 크롤링 차단이 렌더링을 방해할 수 있다고 본다.
- ·응답 코드: 네이버는 없는 페이지에 200을 주는 소프트 404, 점검 중 200 응답을 피하라고 한다. 반대로 정상 페이지가 404나 noindex를 내보내면 그 페이지는 경쟁에 참여조차 못 한다.
- ·robots.txt와 noindex의 역할: 구글은 robots.txt가 노출을 막는 수단이 아니라고 한다. 블스피는 내부 링크가 있는 로그인·대시보드 같은 페이지를 robots.txt로 막지 않고 noindex만 건다. 크롤링을 막으면 noindex를 읽지 못해 주소만 색인될 수 있기 때문이다.
점검 순서 — 화면이 아니라 응답을 본다
- ·대표 URL 10개를 골라 네이버 URL 검사와 구글 URL 검사로 수집·색인 여부, 검색엔진이 고른 정본을 확인한다.
- ·view-source:로 원본 HTML을 열어 canonical, robots 메타, title이 페이지마다 다른지 본다. 자바스크립트 실행 후 화면이 아니라 서버 응답이 기준이다.
- ·robots.txt를 열어 렌더링 리소스 경로(/_next/, /static/ 등)가 막혀 있지 않은지 본다.
- ·사이트맵 안 URL 몇 개를 무작위로 열어 200, index, 자기 자신을 가리키는 canonical인지 확인한다. 사이트맵에 404·noindex·리다이렉트 URL이 섞여 있으면 신호가 흐려진다.
- ·사이트맵으로만 도달하는 고아 페이지가 없는지 본다. 블스피는 키워드 페이지 허브(/keyword)와 푸터 링크를 만들어 내부 링크로도 닿게 했다.
자주 묻는 질문
SEO 최적화 작업은 어디서부터 시작해야 하나요?
색인부터입니다. site: 검색과 서치어드바이저·서치콘솔의 URL 검사로 주요 페이지가 수집·색인되는지, 정본이 제대로 잡혔는지 확인한 뒤에 제목과 콘텐츠를 다듬는 것이 순서입니다. 색인에서 빠진 페이지는 아무리 다듬어도 노출되지 않습니다.
canonical을 꼭 넣어야 하나요?
필수는 아니지만 권장됩니다. 구글은 지정하지 않아도 가장 적합한 URL을 스스로 고른다고 설명합니다. 문제는 잘못 넣었을 때입니다. 모든 페이지가 홈을 canonical로 가리키면 하위 페이지가 정본에서 밀려날 수 있으므로, 페이지마다 자기 주소를 절대경로로 지정하세요.
robots.txt로 관리자 페이지를 막았는데 검색에 주소가 보입니다.
구글은 robots.txt가 페이지 노출을 막는 수단이 아니라고 밝힙니다. 크롤링이 막힌 페이지도 다른 곳의 링크로 주소만 색인될 수 있습니다. 노출을 막으려면 크롤링은 허용하고 noindex를 걸거나, 로그인으로 보호하세요. 내부 링크가 전혀 없는 민감한 경로만 robots.txt로 막는 것이 블스피의 기준입니다.
출처
- 네이버 서치어드바이저 — 웹 사이트를 만들 때
- 네이버 서치어드바이저 — 선호 URL 및 로봇 메타 태그
- 네이버 서치어드바이저 — RSS 및 사이트맵 제출
- 네이버 서치어드바이저 — robots.txt 설정하기
- 네이버 서치어드바이저 — 자바스크립트 검색 최적화
- 네이버 서치어드바이저 — 사이트의 색인 효율성 개선하기
- Google 검색 센터 — rel="canonical" 등으로 표준 URL 지정하기
- Google 검색 센터 — robots.txt 소개
- Google 검색 센터 — 사이트맵 제작 및 제출하기
- 블스피 사이트 운영 기록 — lib/seo.ts·app/robots.ts·app/sitemap.ts 주석과 수정 이력 (2026-08~09)
- 블스피 키워드 난이도 측정 (2026-08, 키워드 1개)