본문 바로가기
SEO·GEO 용어사전

패싯 내비게이션 (Faceted Navigation)

마지막 업데이트
선호 출처로 추가

패싯 내비게이션은 색상과 사이즈, 가격대처럼 여러 속성으로 상품이나 콘텐츠 목록을 좁히는 탐색 방식입니다. 쇼핑몰에서 필터를 선택할 때마다 조건에 맞는 상품만 남는 기능이 대표적입니다. 정렬 기능을 함께 제공하거나 선택 조건을 URL 매개변수에 기록하기도 합니다.

Google 한국어 문서는 이를 ‘속성 탐색’이라고 부릅니다. SEO에서는 필터 기능 자체보다 조합별 URL을 얼마나 만들고, 그중 어떤 페이지를 검색에 제공할지 결정하는 일이 중요합니다.

필터 조합에 따라 늘어나는 URL

Google은 필터 조건을 URL에 담은 예시를 제시합니다.

https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny

선택한 조건을 매개변수로 적으면 색상과 크기 같은 필터를 켤 때마다 URL이 달라집니다. 색상 10종, 사이즈 5종, 가격대 4단계를 각각 하나씩 조합하면 최대 200개의 URL이 생길 수 있습니다. 정렬까지 별도 주소로 처리한다면 더 많은 조합이 만들어집니다.

과잉 크롤링과 유사 페이지 문제

크롤러는 새 조합 URL이 유용한지 내용을 읽기 전에는 판단하기 어렵습니다. 비슷한 결과를 보여 주는 조합까지 대량 요청하면 수집에 자원을 쓰고, 새로 추가된 중요한 페이지를 방문할 시간이 줄어들 수 있습니다. Google은 이런 문제를 ‘과잉 크롤링’으로 설명합니다.

색인된 필터 페이지의 상태도 살펴야 합니다. 유용하지 않은 URL이 색인에 과도하게 쌓이는 문제를 색인 비대화, 고유 정보가 빈약한 페이지를 씬 콘텐츠라고 부릅니다. 여러 페이지가 같은 검색 수요를 두고 경쟁하는 키워드 카니벌라이제이션과는 다른 문제입니다. 필터 URL이 많다는 사실만으로 이 문제가 모두 발생했다고 판단하지 않습니다.

검색에 제공하지 않을 필터의 크롤링 관리

필터 조합을 별도 검색 페이지로 제공할 필요가 없다면 robots.txt로 크롤링을 제한할 수 있습니다. Google이 제시한 아래 예시는 상품, 색상과 크기 매개변수가 있는 URL을 차단하고 전체 상품 목록은 허용합니다.

user-agent: Googlebot
disallow: /*?*products=
disallow: /*?*color=
disallow: /*?*size=
allow: /*?products=all$

필터 상태를 URL 프래그먼트(#)로 관리하는 방법도 있습니다. Google 검색은 일반적으로 프래그먼트를 별도 크롤링과 색인 대상으로 처리하지 않습니다. ?color=green 대신 #color=green을 사용하면 필터별 주소를 별도 검색 페이지로 제공하지 않는 구조가 됩니다.

robots.txt는 크롤링을 차단하는 설정입니다. 다른 곳에서 URL을 링크했다면 Google이 내용을 읽지 않고 주소만 색인할 수 있으므로, 검색결과에서 완전히 제외하는 기능으로 혼동하지 않아야 합니다.

canonical과 nofollow의 한계

캐노니컬 태그는 대표 URL을 제안하고, nofollow는 특정 링크를 따르지 않도록 알립니다. Google은 필터 URL의 장기적인 크롤링 관리에서는 두 방법이 robots.txt나 프래그먼트보다 효과가 낮을 수 있다고 설명합니다.

  • canonical: 필터 없는 목록을 대표 URL로 제안하면 다른 버전의 크롤링이 시간이 지나며 줄어들 수 있습니다. 다만 canonical은 중복되거나 매우 비슷한 콘텐츠를 통합하는 신호이므로, 독립적으로 검색에 제공하려는 필터 페이지까지 한꺼번에 묶어서는 안 됩니다.
  • nofollow: 같은 필터 URL로 연결되는 링크 전체를 관리해야 합니다. 일부에만 넣으면 다른 링크에서 그 URL을 발견할 수 있으며, nofollow 자체가 페이지의 크롤링을 차단하는 규칙은 아닙니다.

검색에 제공할 필터 URL의 구성

특정 필터 조합이 실제 검색 수요에 답하고 독립적인 목록으로 유용하다면 크롤링과 색인을 허용할 수 있습니다. 허용할 조합을 정한 뒤 URL과 응답을 관리합니다.

  1. 매개변수는 &로 구분하고 쉼표, 세미콜론, 대괄호 같은 구분자를 섞지 않습니다.
  2. 필터를 URL 경로로 표현한다면 순서를 일정하게 유지하고 같은 필터가 중복되지 않게 합니다. 매개변수 방식에서도 같은 조합을 여러 주소로 만들지 않도록 정리합니다.
  3. 결과가 없거나 성립하지 않는 조합은 그 URL에서 HTTP 404로 응답합니다. 공통 오류 페이지로 리디렉션하지 않습니다. 필터 중복이나 존재하지 않는 페이지 번호도 점검합니다.

허용할 조합이 늘면 서버가 생성하고 크롤러가 읽을 페이지도 많아집니다. 상품이나 분류가 바뀐 뒤에도 빈 목록과 중복 조합이 계속 만들어지는지 점검해야 합니다.

관련 개념의 구분

크롤 버짓은 Google이 사이트의 크롤링에 배정하는 시간과 자원의 규모입니다. 패싯 URL이 계속 늘어나면 그 자원을 비슷한 목록의 반복 수집에 쓰게 될 수 있습니다.

페이지네이션은 긴 목록을 여러 페이지로 나누는 방식입니다. 필터 없이 페이지 번호만 있는 목록은 패싯 내비게이션과 다릅니다. 중복 콘텐츠는 정렬 순서만 다르고 상품 구성이 같은 경우처럼 필터 구현에서 발생할 수 있는 결과입니다.

실제 사이트 점검 절차

  1. 필터를 선택하며 URL과 상품 목록이 어떻게 달라지는지 기록합니다.
  2. 검색에 제공할 조합과 차단할 조합을 나누고 robots.txt 규칙이 의도한 URL에 적용되는지 검사합니다.
  3. Search Console URL 검사에서 주요 필터 URL의 색인 여부와 Google이 선택한 대표 URL을 살펴봅니다.
  4. 서버 로그에서 필터 URL의 Googlebot 요청량을 집계하고, 수정 전후 중요한 상품 페이지의 수집이 달라졌는지 비교합니다.

Search Console의 URL 매개변수 전용 도구는 2022년에 종료됐습니다. 현재는 사이트의 robots.txt와 실제 URL 검사, 요청 기록으로 설정이 의도대로 작동하는지 확인합니다.

자주 묻는 질문

noindex를 붙이면 패싯 URL 문제가 해결되나요?

noindex는 색인에서 제외하는 지시입니다. Google이 그 지시를 읽으려면 먼저 페이지를 요청해야 하므로 크롤 요청을 아끼는 방법과는 다릅니다. 크롤링 자체를 줄이려는 목적이라면 robots.txt나 프래그먼트 방식의 적합성을 검토합니다.

패싯 필터가 몇 개부터 문제가 되나요?

필터 개수만으로 판단할 수 없습니다. 적은 필터도 선택 가능한 값이 많으면 조합이 급증합니다. 실제 생성되는 URL 수와 목록의 중복 정도, 서버 요청량을 봐야 합니다.

자바스크립트로 필터를 처리하면 이 문제가 없어지나요?

JavaScript를 쓴다는 사실보다 별도 URL을 만드는지가 중요합니다. 화면만 바꾸고 URL을 만들지 않으면 조합별 페이지를 독립적으로 색인할 수 없습니다. 반대로 JavaScript가 크롤링 가능한 URL과 링크를 생성한다면 조합 URL의 수집 문제는 남습니다.

함께 알아두면 좋은 용어

  • 크롤링: 검색로봇이 링크를 따라 URL을 발견하고 내용을 가져오는 과정
  • 색인: 가져온 내용을 검색결과에 쓸 수 있게 저장하고 처리하는 과정
  • 크롤 버짓: Google이 사이트의 크롤링에 배정하는 시간과 자원의 규모
  • 페이지네이션: 긴 목록을 여러 페이지로 나누는 방식
  • 중복 콘텐츠: 같거나 비슷한 내용이 둘 이상의 URL에 있는 상태

참고 문서