고급Google

E-commerce 퍼싯 네비게이션(Faceted Navigation) 크롤 함정 해결

핵심 요약 (TL;DR)

쇼핑몰의 필터, 정렬 기능이 생성하는 무한대의 조합 URL(퍼싯 네비게이션)이 유발하는 크롤 버짓 낭비와 중복 콘텐츠 문제를 해결하고, 노출이 필요한 필터 조합만 구글에 색인시키는 심화 기술을 다룹니다.

읽기 17 2025-03-23

퍼싯 네비게이션이 만드는 SEO 크롤 함정

퍼싯 네비게이션(Faceted Navigation)이란 이커머스 사이트에서 사용자가 카테고리·색상·사이즈·가격·브랜드·리뷰 평점 등의 필터(Filter)를 적용하여 상품을 좁혀가는 UI 요소입니다. 사용자 경험(UX)에서는 필수이지만, SEO 관점에서는 수천~수십만 개의 URL을 자동 생성하여 심각한 기술적 문제를 일으킵니다.

퍼싯 네비게이션이 만드는 4가지 SEO 문제

문제원인영향
1. 중복 콘텐츠(Duplicate Content)색상=빨강&사이즈=L과 사이즈=L&색상=빨강이 다른 URL이지만 동일 결과구글이 어느 URL이 정본인지 혼란, 순위 분산(Link Equity Dilution)
2. 인덱스 비대화(Index Bloat)필터 조합 수가 기하급수적으로 증가 (10필터 × 5옵션 = 9,765,625 조합)저품질 페이지가 인덱스를 채우면 전체 사이트 품질 평가 하락
3. 크롤 버짓 낭비(Crawl Budget Waste)구글봇이 무의미한 필터 조합 URL을 계속 크롤중요한 상품 페이지나 새 콘텐츠의 크롤·인덱싱이 지연됨
4. 링크 에퀴티 분산하나의 카테고리에 대해 수백 개 URL이 존재 → 내부 링크·백링크 에퀴티 분산카테고리 페이지의 순위 경쟁력 약화

실제 사례: 필터 조합 폭발

한 의류 쇼핑몰의 "여성 상의" 카테고리에 다음 필터가 있다고 가정합니다:

필터옵션 수
색상12개
사이즈8개
가격대5개
브랜드20개
소재6개
정렬 (가격순, 인기순 등)4개

가능한 URL 조합: 12 × 8 × 5 × 20 × 6 × 4 = 약 230,400개 — 단 하나의 카테고리에서! 사이트에 50개 카테고리가 있다면 1,150만 개의 URL이 생성될 수 있습니다.

10×5 필터 = 976만 URLs필터 조합 폭발단순 조합만으로도 수백만개 URL 생성
유효 URL의 50배+인덱스 비대화 위험실제 가치 있는 URL 대비 비대화 비율
최대 80%크롤 버짓 손실무의미한 필터 URL에 소비되는 크롤 비용

퍼싯 URL 분류법: SEO 가치 기반 4단계

모든 필터 URL을 일괄적으로 차단하거나 허용하면 안 됩니다. SEO 가치(검색 수요)에 따라 4단계로 분류하고 각각 다른 전략을 적용합니다.

레벨유형예시전략검색 수요
Level 1카테고리 메인/women/tops✅ 인덱싱 + 크롤 허용 + 사이트맵 포함높음 (월 10,000+)
Level 2고가치 필터/women/tops/nike, /women/tops/black✅ 인덱싱 + 크롤 허용 + 정적 URL로 변환중간~높음 (월 1,000+)
Level 3저가치 필터/women/tops?color=red&size=L🔶 크롤만 허용 (noindex) 또는 canonical → Level 1낮음 (월 100 이하)
Level 4무가치 조합/women/tops?color=red&size=L&sort=price_asc&page=3❌ 크롤 차단 (robots.txt 또는 AJAX)거의 없음

검색 수요 판별 방법

  1. 키워드 리서치: "나이키 여성 상의", "검정 여성 탑" 등 필터 조합에 해당하는 실제 검색 수요가 있는지 확인
  2. GSC 데이터: 현재 인덱싱된 필터 URL 중 실제 노출·클릭을 받는 페이지 식별
  3. 경쟁사 분석: Screaming Frog로 경쟁 사이트의 인덱싱된 필터 URL 패턴 분석
  4. 내부 검색 데이터: 사이트 내부 검색에서 자주 사용되는 필터 조합 = 외부 검색 수요 높을 가능성

해결 전략 ①: robots.txt와 크롤 차단

robots.txt를 이용한 파라미터 차단

# 정렬 파라미터 차단
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*order=

# 가격 필터 차단 (저가치)
Disallow: /*?*price_min=
Disallow: /*?*price_max=

# 다중 필터 조합 차단
Disallow: /*?*color=*&size=*&brand=

# 페이지네이션 높은 페이지 차단 (선택적)
Disallow: /*?*page=[3-9]
Disallow: /*?*page=[1-9][0-9]

⚠️ robots.txt 한계

장점한계
크롤 차단에 가장 효과적 — 크롤 버짓 직접 절약인덱싱은 완전히 막지 못함 — 다른 페이지에서 링크되면 URL만으로 인덱싱 가능 (인덱스에는 표시되지만 콘텐츠 없이)
구현이 간단, 서버 부하 없음이미 인덱싱된 URL은 robots.txt로 차단해도 인덱스에서 즉시 제거되지 않음
패턴 기반 대량 차단 가능너무 광범위하게 차단하면 가치 있는 URL도 함께 차단될 위험

Google Search Console URL 파라미터 도구

⚠️ 2022년 Google이 URL Parameter 도구를 비활성화했습니다. 현재는 robots.txt, canonical, noindex 등 다른 방법을 사용해야 합니다. Search Console에서 크롤 통계 리포트(설정 → 크롤 통계)로 구글이 크롤하는 URL 패턴을 모니터링하세요.

해결 전략 ②: Canonical 태그로 중복 통합

Canonical 태그 전략

필터 URL의 rel="canonical"해당 카테고리의 메인 URL로 설정하여 순위 시그널을 통합합니다.

<!-- 필터 적용된 페이지 -->
<!-- URL: /women/tops?color=red&size=L -->
<link rel="canonical" href="https://example.com/women/tops" />

Canonical 적용 가이드라인

시나리오Canonical 대상이유
정렬만 변경 (?sort=price)정렬 없는 기본 URL동일 상품, 순서만 다름 → 완벽한 중복
색상 단일 필터 (?color=red)검색 수요 있으면 self-canonical, 없으면 카테고리 메인검색 수요에 따라 Level 2 또는 Level 3
다중 필터 조합 (?color=red&size=L&brand=nike)카테고리 메인 또는 가장 관련성 높은 단일 필터너무 구체적인 조합은 검색 수요 미비
페이지네이션 (?page=2)self-canonical (Google 권장)각 페이지네이션은 고유 콘텐츠 (다른 상품 목록)
동일 파라미터 순서 다름 (?a=1&b=2 vs ?b=2&a=1)파라미터 정렬된 표준 URL같은 결과를 보여주는 완벽한 중복

⚠️ Canonical 태그 주의사항

  • Canonical은 "힌트(Hint)": 구글은 canonical 태그를 반드시 따르지 않을 수 있음. 페이지 콘텐츠가 크게 다르면 무시
  • 모순되는 시그널 피하기: canonical을 설정한 URL을 sitemap에 포함하면 구글이 혼란 — canonical URL만 sitemap에 포함
  • 체인 금지: A → B → C canonical 체인은 B에서 끊길 수 있음. 항상 최종 canonical URL을 직접 지정
  • 교차 도메인 canonical: 같은 사이트 내에서만 사용. 다른 도메인으로의 canonical은 특수한 경우에만

해결 전략 ③: noindex와 AJAX 비크롤링

noindex 활용 전략

<meta name="robots" content="noindex, follow">를 사용하면 해당 페이지는 인덱싱되지 않지만, 페이지 내 링크는 따라감(Follow)으로써 상품 페이지로의 링크 에퀴티는 유지됩니다.

적합한 경우부적합한 경우
Level 3 필터(저가치) — 크롤은 허용하되 인덱싱 방지Level 4 필터(무가치) — 크롤 자체를 막아야 크롤 버짓 절약
필터 페이지에서 상품 페이지로의 내부 링크가 중요한 경우수만 개의 URL — noindex여도 크롤 비용 발생
이미 인덱싱되어 제거가 필요한 경우robots.txt로 이미 차단된 URL (noindex를 발견 못함)

핵심 원칙: noindex는 인덱싱을 막지만 크롤을 막지 않습니다. 구글봇이 페이지를 크롤해야 noindex 태그를 발견하므로, 수만 개의 필터 URL에 noindex만 적용하면 크롤 버짓 낭비가 여전합니다. 크롤 차단이 필요하면 robots.txt 또는 AJAX를 사용하세요.

AJAX/JavaScript 방식: 크롤 없는 필터링

가장 권장되는 접근법 중 하나는 SEO 가치가 없는 필터를 AJAX/JavaScript로 구현하여 URL을 생성하지 않는 것입니다.

구현 방식설명장단점
Hash Fragment (#)/women/tops#color=red — # 이후는 서버로 전송되지 않음✅ 완벽한 크롤 차단 / ❌ 뒤로 가기, 공유 불편
History API (pushState)URL을 ?color=red로 바꾸되 <a> 태그를 생성하지 않음✅ UX 유지 / ⚠️ 잘못 구현하면 JS 렌더링 시 크롤 가능
동적 폼 POST필터를 POST 요청으로 처리 — GET URL이 생성되지 않음✅ URL 완전 방지 / ❌ 필터 상태 공유·북마크 불가

하이브리드 접근법 (추천)

  • Level 1~2 필터: 서버사이드 렌더링 + 정적 URL + <a> 태그 → 크롤·인덱싱 허용
  • Level 3~4 필터: AJAX/JavaScript로 처리 + URL 변경 없음 또는 Hash Fragment → 크롤 방지

해결 전략 ④: 정적 SEO 랜딩 페이지 생성

Level 2 필터(고가치, 검색 수요 있음)는 동적 파라미터 URL 대신 깨끗한 정적 URL로 변환하고, SEO 최적화된 고유 콘텐츠를 추가하여 별도의 랜딩 페이지로 만듭니다.

동적 vs 정적 URL 비교

동적 URL정적 URL
/women/tops?brand=nike&color=black/women/black-nike-tops
/shoes?type=running&brand=adidas/shoes/adidas-running
/electronics?category=laptop&price=under-1000000/laptops/budget-under-100만원

정적 랜딩 페이지에 필요한 고유 콘텐츠

요소설명예시
고유 Title해당 필터 조합에 맞는 키워드 포함 타이틀"나이키 블랙 여성 상의 | 2025 인기 제품 모음"
고유 H1Title과 일관된 H1 태그"나이키 블랙 여성 상의 컬렉션"
소개 텍스트100~300단어의 해당 카테고리/필터에 대한 설명, 구매 가이드, 선택 팁"나이키 블랙 여성 상의는 트레이닝부터 캐주얼까지..."
고유 Meta Description행동 유도 포함 설명"나이키 블랙 여성 상의 30종 비교. 무료 배송..."
상품 목록해당 필터에 맞는 상품들자동으로 필터링된 상품 리스트
FAQ해당 카테고리에 대한 자주 묻는 질문"나이키 사이즈는 정사이즈인가요?"

⚠️ 주의: 대량 생성의 함정

  • 검색 수요가 없는 필터 조합까지 정적 페이지를 만들면 → Thin Content + Doorway Page 리스크
  • 소개 텍스트가 템플릿만 바꿔서 작성되면 → Google이 패턴을 감지하여 페널티 가능
  • 반드시 검색 수요 데이터를 기반으로 생성할 필터 조합을 선별하세요
  • Programmatic SEO의 원칙 적용: "페이지당 고유 가치"가 있어야 합니다

종합 구현 전략과 기술 스택별 가이드

전략 조합 매트릭스

필터 유형URL 생성Canonicalnoindexrobots.txt사이트맵
카테고리 메인정적 URLself-canonical-✅ 허용✅ 포함
고가치 필터 (브랜드, 주요 색상)정적 URLself-canonical-✅ 허용✅ 포함
저가치 필터 (사이즈+색상 조합)파라미터 URL→ 카테고리 메인noindex, follow✅ 허용❌ 미포함
정렬 (가격순, 인기순)파라미터 URL→ 정렬 없는 URLnoindex❌ 차단❌ 미포함
페이지네이션 (page=2, 3...)파라미터 URLself-canonical-✅ 허용✅ 포함 (주요 페이지만)
다중 필터 조합AJAX (URL 생성 X)---❌ 미포함

기술 스택별 구현 팁

플랫폼핵심 설정
Shopify기본 필터가 ?variant= 파라미터 생성 → 별도 앱(Smart SEO, Boost Product Filter)으로 관리. Liquid 테마에서 canonical 태그 커스터마이징
WooCommerce기본 ?pa_color= 파라미터 → Yoast SEO에서 파라미터 canonical 관리. WP All Import 등으로 정적 URL 페이지 대량 생성 가능
Next.js (커스텀)Server Component에서 SSR로 Level 1~2 랜딩 페이지 생성. 클라이언트 컴포넌트에서 Level 3~4 필터를 AJAX로 처리. generateMetadata()로 페이지별 고유 메타데이터
Magento내장 Layered Navigation 모듈의 URL 재작성 설정. robots.txt에 Disallow: /*?* 후 허용할 패턴만 Allow:
카페24/NHN고도한국형 솔루션은 필터 URL 제어가 제한적 → robots.txt + meta canonical 조합이 현실적 대안

모니터링과 지속적 관리

  1. GSC 인덱스 현황: "유효" 페이지 수가 예상 범위 내인지 확인 (상품 수 + 카테고리 수 + Level 2 랜딩 페이지)
  2. GSC "크롤 통계": 크롤 요청의 URL 패턴 확인 — 필터 URL에 과도한 크롤이 있는지
  3. Screaming Frog 사이트 감사: 인덱싱 가능한 필터 URL 수량과 canonical 일관성 확인
  4. "Crawled - Not Indexed" 보고서: 구글이 크롤했지만 인덱싱하지 않은 URL → Level 4 후보
  5. site: 명령어: site:example.com inurl:?color=로 인덱싱된 필터 URL 수 확인

자주 묻는 질문 (FAQ)

Q. "모든 필터 URL을 noindex 처리하면 되지 않나요?" — 가장 흔한 실수
인기 있는 접근법이지만 2가지 문제가 있습니다: (1) noindex는 크롤을 막지 않습니다. 구글봇이 noindex 태그를 발견하려면 페이지를 크롤해야 하므로, 수만 개의 필터 URL에 전부 noindex를 적용해도 크롤 버짓은 여전히 낭비됩니다. (2) noindex, follow는 링크 에퀴티를 전달하지만, 장기적으로 구글은 noindex 페이지의 follow도 무시하는 경향이 있습니다. 최선의 방법은 robots.txt 또는 AJAX로 크롤 자체를 차단하되, SEO 가치 있는 Level 2 필터는 정적 URL로 별도 구축하는 것입니다.
Q. robots.txt로 차단한 URL이 Google 인덱스에 여전히 나타납니다. 왜 그런가요?
robots.txt는 크롤을 차단하지만 인덱싱을 차단하지 않습니다. 다른 페이지에서 해당 URL로의 링크가 있으면, 구글은 URL의 존재를 알고 있으므로 콘텐츠 없이도 URL만 인덱스에 표시할 수 있습니다. 이 경우 (1) 내부 링크에서 해당 URL로의 <a> 태그 제거 (AJAX로 전환), (2) 이미 인덱싱된 URL은 GSC에서 일시적 삭제 요청, (3) robots.txt 차단을 해제하고 noindex를 사용하여 구글이 크롤 → noindex 발견하게 한 후 인덱스에서 제거 → 다시 robots.txt 차단 (고급 기법).
Q. 페이지네이션에 rel="next"/"prev"를 사용해야 하나요?
Google은 2019년에 rel="next"/"prev"를 공식적으로 무시한다고 발표했습니다. 현재 Google의 권장은: (1) 각 페이지네이션 페이지에 self-canonical을 사용, (2) 주요 페이지(page=1, 2 등)는 사이트맵에 포함, (3) 매우 깊은 페이지(page=50+)는 robots.txt로 차단 고려. 대안으로 "Load More" 또는 무한 스크롤 패턴을 사용하되, SEO를 위해 페이지 URL을 유지하는 하이브리드 구현(Lazy Load + <a> 링크 병행)을 추천합니다.
Q. 파라미터 순서가 다른 URL(예: ?a=1&b=2 vs ?b=2&a=1)은 어떻게 처리하나요?
구글은 파라미터 순서가 다른 URL을 별개의 URL로 인식합니다. 이것은 중복 콘텐츠의 가장 흔한 원인 중 하나입니다. 해결법: (1) 서버에서 파라미터를 알파벳 순으로 정규화하여 항상 같은 순서의 URL로 리다이렉트, (2)정규화된 URL을 canonical로 지정, (3) 프론트엔드에서 링크 생성 시 항상 같은 순서로 파라미터 배치. Next.js 예시: new URLSearchParams(sorted).toString().
Q. 크롤 버짓은 소규모 이커머스에서도 신경 써야 하나요?
Google의 John Mueller에 따르면 대부분의 소규모 사이트(~1만 페이지 이하)는 크롤 버짓을 걱정할 필요가 없습니다. Google의 크롤 용량은 충분합니다. 그러나 필터 조합으로 인해 1만 개 이하의 실제 페이지가 10만 개 이상의 URL을 생성하는 경우, 소규모 사이트에서도 크롤 버짓 문제가 발생합니다. GSC의 "크롤 통계" 보고서에서 크롤 요청 수를 확인하세요. 크롤 요청의 대부분이 필터 URL이라면 최적화가 필요합니다. 핵심 지표: "유효 인덱스 페이지 수 / 크롤 요청 수" 비율이 낮으면 비효율적 크롤이 진행 중입니다.

지금 읽으신 SEO 지식, 바로 적용해보세요!

검색엔진 최적화는 실전입니다. SEO SOVISS의 무료 분석 도구로 내 웹사이트의 오디트 점수를 즉시 확인하고 기술적 문제점을 점검해보세요.

내 웹사이트 진단하기 →
주정만

AI 개발팀 팀장

주정만

LLM(대형 언어 모델)의 구동 원리를 리버스 엔지니어링하여, AI가 가장 선호하는 응답 구조(GEO)를 웹 기술로 구현합니다.

SEO SOVISS 전체 집필진 보기 →