사이트 구조
검색에 좋은 페이지 주소(URL)는 어떻게 지어야 하나요
구글 공식 권장사항을 바탕으로 읽기 쉬운 단어와 하이픈 쓰는 법, 한글 주소와 퍼센트 인코딩, 매개변수 정리, 주소가 끝없이 늘어나는 함정을 막는 방법을 정리했어요.
원본Google 검색 센터 「Google 검색의 URL 구조 권장사항」 · 원문 최종 업데이트 2025-12-31 기준
- 숫자 ID보다 페이지 내용을 알 수 있는 단어로 주소를 지어야 손님과 구글 모두 이해하기 쉬워요.
- 단어 구분은 하이픈(-)으로 하고, 밑줄(_)이나 단어 붙여 쓰기는 피하는 게 구글의 권장이에요.
- 구글은 대문자와 소문자가 다르면 다른 주소로 보기 때문에, 서버가 같은 페이지를 보여 준다면 한 가지 표기로 통일해 두는 게 좋아요.
- 필터 조합, 세션 ID, 끝없는 달력처럼 비슷한 주소가 계속 생기는 구조는 크롤링을 낭비시키니 robots.txt나 nofollow로 관리하세요.
- #(프래그먼트) 뒤의 값으로 내용을 바꾸는 방식은 구글이 대체로 따라가지 못하니, 화면 전환에는 History API를 쓰는 게 맞아요.
검색에 좋은 주소는 두 가지 조건을 갖춰요. 손님이 주소창만 보고도 어떤 페이지인지 짐작할 수 있어야 하고, 구글 로봇이 같은 내용을 여러 주소로 나눠 읽느라 헤매지 않아야 해요. 이 글에서는 이 두 조건을 채우는 구체적인 규칙을 구글 공식 권장사항에 따라 하나씩 살펴봐요.
주소 짓는 방식이 왜 중요한가요
주소 구조가 엉키면 구글이 사이트를 효율적으로 크롤링하기 어려워져요. 크롤링은 구글의 로봇 프로그램이 페이지를 찾아 읽어 가는 일이에요. Google 검색의 URL 구조 권장사항을 보면, 기준에 맞지 않는 주소를 쓸 경우 크롤링이 지나치게 많아지거나 거꾸로 아예 안 될 가능성이 높다고 해요.
반대로 간단하고 논리적인 주소는 구글과 손님이 사이트를 이해하는 데 도움이 돼요. 다만 주소만 바꾼다고 순위가 오른다는 뜻은 아니에요. 구글이 페이지를 찾아 저장하는 흐름은 구글이 홈페이지를 찾고 저장하고 보여 주는 과정에서 먼저 보면 이해가 쉬워요.
읽을 수 있는 단어로 짓고 하이픈으로 나누세요
가장 기본은 긴 숫자 ID 대신 내용을 드러내는 단어를 쓰는 거예요. 필라테스 학원이라면 수업 소개 페이지를 /class/reformer-beginner처럼 지으면 주소만 봐도 무슨 페이지인지 알 수 있어요. 콘텐츠를 먼저 묶음별로 정리해 두면 주소도 자연스럽게 논리적인 모양이 돼요(묶음 위치를 검색 결과에 보여 주는 법은 탐색경로 표시와 BreadcrumbList 넣는 법 참고).
| 권장 | 권장하지 않음 | 이유 |
|---|---|---|
/class/reformer-beginner | /index.php?topic=42&area=3a5ebc... | 긴 ID는 사람이 읽을 수 없어요 |
/summer-bouquet | /summer_bouquet | 밑줄보다 하이픈이 단어 구분에 좋아요 |
/summer-bouquet | /summerbouquet | 붙여 쓰면 단어 경계가 안 보여요 |
밑줄을 피하라는 데는 이유가 있어요. 프로그래밍에서는 format_date처럼 밑줄로 여러 단어를 하나로 묶어 표시하는 습관이 널리 퍼져 있어요. 그래서 하이픈을 써야 사용자와 검색엔진이 주소 속 개념을 따로따로 알아보기 쉬워요.
한글로 주소를 지어도 되나요
네, 써도 돼요. 구글은 잠재고객이 검색할 때 쓰는 언어로 주소를 지으라고 권해요. 한국 손님이 한국어로 검색한다면 /꽃다발처럼 한글 단어를 써도 되고, 소리 나는 대로 로마자로 옮긴 단어를 써도 돼요.
다만 링크 코드(href 속성)에 한글 같은 비영어 문자를 넣을 때는 퍼센트 인코딩을 해야 해요. 퍼센트 인코딩은 문자를 %와 숫자·영문 조합으로 바꿔 적는 방식이에요. 예를 들어 '꽃'은 %EA%BD%83으로 바뀌어요. 영문 알파벳이나 숫자처럼 특별한 용도로 예약되지 않은 문자는 그대로 둬도 괜찮아요.
대소문자와 매개변수는 깔끔하게
구글은 대문자와 소문자를 구분해요. /Menu와 /menu를 서로 다른 주소로 보기 때문에, 서버가 둘을 같은 페이지로 보여 준다면 한 가지 표기로 통일하는 게 좋아요. 그래야 구글이 같은 페이지인지 판단하기 쉬워요.
매개변수는 주소의 ? 뒤에 붙는 꼬리표예요. 붙일 때는 표준 형식을 지키세요.
https://example.com/flowers?type=bouquet&color=pink,white&sort=low-to-high
- 이름과 값은 등호(=)로 이어요.
- 매개변수끼리는 앰퍼샌드(&)로 이어요.
- 같은 항목에 값이 여러 개면 쉼표(,)로 나열해요.
- 화면 내용을 바꾸지 않는 매개변수는 지워서 주소를 짧게 만들어요.
같은 페이지가 여러 주소로 열리고 있다면 대표 주소(표준 URL) 정하는 법도 함께 확인해 보세요.
주소가 끝없이 늘어나는 함정을 막으세요
내용은 거의 같은데 주소만 다른 페이지가 쌓이면, 구글 로봇은 같은 내용을 되풀이해 읽느라 힘을 빼고 정작 사이트의 일부 페이지는 색인되지 못한 채 남을 수 있어요. 이런 주소가 생기는 흔한 원인은 네 가지예요.
- 필터 조합: 꽃집 쇼핑몰에서 색상, 가격대, 용도 필터를 겹쳐 고를 때마다 새 주소가 생기면 비슷한 목록 페이지가 폭발적으로 늘어나요.
- 관련 없는 매개변수: 어디서 왔는지 기록하는 추천 값, 정렬 값, 세션 ID가 대표적이에요. 세션 ID는 주소에 넣기보다 쿠키로 처리하는 게 좋아요.
- 끝없는 달력: 사진 스튜디오 예약 달력에서 '다음 달' 링크가 끝없이 이어지면 미래 페이지가 무한히 생겨요. 이런 링크에는 nofollow 속성을 붙여요.
- 깨진 상대 링크:
../../category처럼 위 폴더로 거슬러 올라가는 링크는 엉뚱한 주소를 만들 수 있어요./category/처럼 맨 앞의/부터 시작하는 루트 상대 주소를 쓰세요. 링크 작성 기준은 구글이 읽는 링크 쓰는 법에 정리해 두었어요.
이런 주소가 이미 크롤링되고 있다면 사이트 내 검색 결과, 정렬·필터 주소, 달력 주소를 robots.txt로 막는 방법이 권장돼요. 자세한 작성법과 주의점은 robots.txt로 막을 수 있는 것과 없는 것에서 확인하세요. 필터 메뉴가 많은 사이트라면 속성 탐색 URL의 크롤링 관리 방법도 참고해 보세요.
#(프래그먼트)로 내용을 바꾸지 마세요
example.com/#/menu처럼 # 뒤의 값에 따라 화면 내용이 바뀌는 구조는 피하세요. 구글은 일반적으로 이 부분(URL 프래그먼트)을 지원하지 않아요. 그래서 # 뒤에만 다른 내용이 있으면 별도 페이지로 인식되지 않을 수 있어요. 자바스크립트로 화면을 바꾸는 사이트라면 자바스크립트 SEO 기본 안내에서 설명하는 History API 방식을 쓰는 게 맞아요.
정리
- 홈페이지 메뉴를 차례로 눌러 주소창을 확인하고, 주소만 봐서는 무슨 페이지인지 모르겠는 곳을 표시해 두세요.
- 위에서 본 규칙을 우리 사이트만의 주소 작성 원칙으로 한 줄 메모해 두고, 앞으로 만드는 페이지에는 모두 그 원칙을 따르세요.
- 예약, 상품 목록, 사이트 내 검색을 직접 써 보면서 클릭할 때마다 주소 뒤에 꼬리표가 새로 붙는지 살펴보고, 붙는다면 차단할 대상인지 판단하세요.
- 기존 주소를 바꿀 계획이라면 옛 주소와 새 주소가 동시에 열리지 않는지 확인하고, 앞에서 소개한 대표 주소 지정 방법으로 정리하세요.
자주 묻는 질문
해외 손님을 위한 페이지는 주소를 어떻게 나누는 게 좋나요?
여러 나라 손님을 받는 사이트라면 지역별로 나누기 쉬운 주소 구조가 좋아요. 구글은 example.de처럼 국가별 도메인을 쓰거나, example.com/de/처럼 국가별 하위 폴더를 두는 방식을 예로 들어요.
주소에 이모지나 특수문자를 넣어도 되나요?
넣을 수는 있지만 링크 코드에서는 퍼센트 인코딩을 해야 해요. 구글 문서에서도 이모지가 그대로 들어간 주소는 권장하지 않는 예로, %F0%9F... 같은 인코딩 형태는 권장하는 예로 보여 줘요. 표준에서 특별한 용도로 예약해 둔 문자도 인코딩해야 해요.
매개변수를 콜론(:)이나 대괄호([ ])로 구분하면 안 되나요?
권장하지 않아요. 구글 문서는 [category:dresses]처럼 콜론과 대괄호로 묶는 형식을 권장하지 않는 예로 보여 줘요. 쉼표 한 개와 두 개를 섞어 구분하는 독자 형식도 마찬가지예요. 이미 이런 형식을 쓰고 있다면 일반적인 표준 형식으로 맞춰 두는 편이 좋아요.
필터로 만든 목록 페이지가 왜 '중복'으로 취급되나요?
필터를 하나 더할 때마다 새 주소가 생기지만, 그 목록들이 보여 주는 상품은 대부분 겹치기 때문이에요. 예를 들어 공방 쇼핑몰의 '원목' 목록과 '원목 + 3만 원 이하' 목록은 같은 상품을 상당 부분 함께 보여 줘요. 구글 로봇은 상품 페이지로 가는 길이 몇 개만 있어도 되니, 나머지 목록은 같은 길을 되풀이하는 셈이 돼요.
출처
- Google 검색의 URL 구조 권장사항 — Google 검색 센터 · 최종 업데이트 2025-12-31
이 글은 위 Google 검색 센터 문서(CC BY 4.0)를 바탕으로 다올라가 한국어로 풀어 쓴 가이드입니다. 원문은 바뀔 수 있으니 중요한 결정 전에는 원문을 함께 확인해 주세요.