URL 슬러그 SEO 모범 사례: kebab-case가 유리한 이유

가장 좋은 URL 슬러그는 하이픈으로 이은 소문자 단어 몇 개입니다. Kebab_Case_Slugs가 아니라 kebab-case-slugs처럼요. Google 문서는 밑줄보다 하이픈을 권장하고, Google은 URL 경로의 대소문자를 구분하므로 소문자만 쓰면 뜻하지 않게 중복 페이지가 생기는 일을 막을 수 있습니다. URL 슬러그에 관해 사람들이 하는 나머지 이야기(이상적인 길이, 불용어, 키워드 위치)는 거의 모두 규칙이 아니라 판단의 문제입니다. 그래서 이 글에서는 둘을 구분해서 설명합니다.
하이픈과 밑줄: Google이 실제로 말하는 것
여기서는 SEO 속설에 기댈 필요가 없습니다. Google이 URL 구조 모범 사례에서 직접 밝히고 있기 때문입니다.
We recommend using hyphens (-) instead of underscores (_) to separate words in your URLs, as it helps users and search engines better identify concepts in the URL. (URL에서 단어를 구분할 때는 밑줄(_) 대신 하이픈(-)을 쓰기를 권장합니다. 사용자와 검색엔진이 URL 속 개념을 더 잘 파악하는 데 도움이 되기 때문입니다.)
이유는 쉽게 알 수 있습니다. 밑줄은 이미 단어를 묶는 데 쓰입니다. 프로그래머가 함수 이름을 format_date로 짓는 것도 하나의 단위로 읽히기를 바라기 때문입니다. 반대로 하이픈은 서로 다른 단어 사이의 틈으로 읽힙니다. 이 문서는 다음과 같은 예로 요점을 보여 줍니다.
| URL 경로 | Google의 판단 |
|---|---|
/summer-clothing/filter?color-profile=dark-grey | 권장(하이픈) |
/summer_clothing/filter?color_profile=dark_grey | 권장하지 않음(밑줄) |
/greendress | 권장하지 않음(단어를 붙여 씀) |
Google이 하지 않는 말에도 주목하세요. 밑줄이 들어간 URL은 순위에 오를 수 없다거나 무시된다고는 한 번도 말하지 않습니다. 바로 그렇게 단언하는 블로그 글이 많지만 소문으로 취급하세요. 문서에 적힌 입장은 합리적인 이유가 붙은 권장 사항입니다.
슬러그의 키워드는 얼마나 중요할까?
많은 사람이 생각하는 것보다 덜 중요합니다. Google의 SEO 시작 가이드(SEO Starter Guide)는 “keywords in the domain name or URL path”(도메인 이름이나 URL 경로의 키워드)를 집중하지 말아야 할 것 목록에 올리고, 순위 면에서는 “have hardly any effect beyond appearing in breadcrumbs”(이동 경로에 표시되는 것 외에는 거의 영향이 없다)라고 말합니다. 그래도 같은 가이드가 설명적인 URL은 권장합니다. URL의 일부가 검색 결과에 이동 경로(breadcrumbs)로 표시될 수 있고, 사람들이 그것을 보고 결과가 유용해 보이는지 판단하기 때문입니다.
그러니 URL 슬러그를 잘 쓰는 솔직한 이유는 사람입니다. /blog/seo-url-slugs-kebab-case 같은 슬러그는 클릭하기 전에 무엇을 얻게 될지 알려 주고, 채팅창에 붙여 넣어도 뜻이 유지되며, 소리 내어 읽기도 쉽습니다. /p?id=8812 같은 슬러그는 어느 것도 해 주지 못합니다.
이는 흔한 걱정에 대한 답이기도 합니다. 예전의 my_post URL을 모두 my-post로 바꿔야 할까요? 저희는 이미 사이트 구조를 개편하는 중이 아니라면 바꾸지 않겠습니다. URL을 바꾸려면 리디렉션을 설정하고 검색 엔진이 따라잡을 때까지 기다려야 하는데, 문서로 확인되는 이점은 작습니다. 새로 만드는 URL에는 모두 하이픈을 쓰고, 잘 작동하는 URL은 그대로 두세요. 그래도 옮기기로 했다면 퍼머링크, URL 구조, 안전한 리디렉션 가이드에 방법이 나와 있습니다.
URL 슬러그는 왜 소문자여야 할까
URL의 호스트 부분(Example.com)은 대소문자를 구분하지 않지만, 그 뒤에 오는 부분은 구분할 수 있습니다. Google 문서는 URL 처리가 대소문자를 구분한다고 분명히 밝히며, /APPLE과 /apple이 각자 별도의 콘텐츠를 가진 서로 다른 두 URL로 취급되는 예를 듭니다.
그다음에 어떤 일이 벌어지는지는 서버에 달려 있습니다. 많은 환경에서는 그 이름과 정확히 일치하는 파일이나 라우트가 없으므로 /Blog/My-Post가 그냥 404를 반환합니다. 어떤 환경에서는 대소문자를 어떻게 쓰든 같은 페이지를 보여 주기 때문에 은근슬쩍 중복이 생깁니다. 두 번째 경우에 대한 Google의 조언은 모든 텍스트를 같은 대소문자로 통일해서 URL들이 같은 페이지를 가리킨다는 것을 알아보기 쉽게 하라는 것입니다.
고를 만한 대소문자는 당연히 소문자입니다. 대부분의 사람은 URL을 소문자로 입력하고, Pricing이었는지 pricing이었는지 기억하는 사람은 없습니다. 서버가 이미 대소문자가 섞인 요청에 응답하고 있다면, 대문자가 들어간 모든 경로에서 소문자 경로로 영구 리디렉션을 추가하세요. (도메인과 이메일 주소는 규칙이 다릅니다. 이 부분은 도메인 이름과 이메일의 대소문자에서 설명합니다.)
제목을 깔끔한 슬러그로 바꾸기
일반적인 슬러그 생성기가 따르는 과정은 다음과 같고, 손으로 할 때도 같은 순서로 하면 됩니다.
- 모든 글자를 소문자로 바꿉니다.
- don't가
don-t가 아니라dont가 되도록, 아포스트로피는 다른 문자로 바꾸지 말고 지웁니다. - 이어진 공백과 문장 부호는 모두 하이픈 하나로 바꿉니다.
- 처음과 끝의 하이픈을 지웁니다.
- 악센트와 비라틴 문자를 어떻게 처리할지 정합니다.
- 결과를 읽어 보고 사람의 눈으로 다듬습니다.
솜씨가 갈리는 곳은 여섯 번째 단계입니다. 저희 변환기의 ‘슬러그화’ 버튼으로 변환한 실제 예를 몇 가지 보겠습니다.
| 제목 | 자동 슬러그 | 다듬은 후 |
|---|---|---|
| SEO Best Practices for URL Slugs: Why kebab-case Wins | seo-best-practices-for-url-slugs-why-kebab-case-wins | seo-url-slugs-kebab-case |
| Don't Panic: 10 Tips for Café Owners! | dont-panic-10-tips-for-cafe-owners | cafe-owner-tips |
| C++ vs C# | c-vs-c | cpp-vs-csharp |
첫 번째 행은 이 글의 실제 슬러그입니다. “best practices”, “why”, “wins”를 뺀 것은 의미는 더하지 않고 길이만 늘리기 때문입니다. 세 번째 행은 다듬는 단계를 건너뛸 수 없는 이유를 보여 줍니다. +와 # 같은 기호가 그 제목의 의미를 전부 담고 있는데, 기계적으로 만든 슬러그는 이를 버립니다.
불용어: 군더더기는 자르고 뜻은 남기세요
영어에서 “a”, “the”, “of” 같은 작은 단어를 빼는 것은 긴 슬러그를 줄이는 합리적인 방법입니다. 하지만 규칙은 아닙니다. 뜻을 바꾸는 짧은 단어는 남기세요. coffee-without-sugar와 coffee-sugar는 서로 다른 페이지이고, “not”, “no”, “vs”는 작아도 뜻을 떠받치는 단어입니다.
길이
Google은 슬러그의 글자 수 제한을 공표하지 않습니다. 지침은 URL을 단순하고 읽기 쉽게 유지하라는 것뿐입니다. 저희의 경험칙은 주제를 가리키는 단어 세 개에서 여섯 개입니다. 그러면 이동 경로에서도 읽기 쉽고 공유하기에도 충분히 짧습니다. 슬러그가 제목 전체를 반복할 필요는 없고, 헤드라인을 손볼 때마다 바뀌어서도 안 됩니다.
악센트와 다른 언어
Google은 URL에 독자가 쓰는 언어의 단어를 사용하라고 권장합니다. 악센트가 붙은 라틴 문자 텍스트는 많은 슬러그 생성기가 악센트를 제거해서 crème brûlée가 creme-brulee가 됩니다. 대개는 괜찮지만 가끔 단어가 바뀔 수 있습니다. 독일어 schön(아름다운)은 schon(이미)이 됩니다. 결과는 꼭 읽어 보세요. 그리스 문자, 키릴 문자, 일본어 같은 문자는 원래의 글자를 그대로 둘 수 있습니다. ASCII가 아닌 문자를 슬러그에 쓸 때의 장단점은 저희 퍼머링크 가이드에서 다룹니다.
ConvertCaseHQ의 kebab-case와 슬러그화
저희 대소문자 변환기에는 kebab-case 버튼과 슬러그화 버튼이 모두 있고, 둘은 같지 않습니다. 둘 다 텍스트를 소문자로 바꾸고, 아포스트로피를 지우고, 그리스 문자·키릴 문자·일본어 같은 비라틴 문자는 그대로 두며(빈 슬러그는 누구에게도 도움이 되지 않으니까요), 단어를 하이픈으로 잇습니다. 차이점은 다음과 같습니다.
- 악센트: 슬러그화는 라틴 문자에서 악센트를 제거합니다(é → e, ł → l, ß → ss). kebab-case는 그대로 두므로 Café는
café가 됩니다. - camelCase 입력: kebab-case는 이를 나눕니다(
XMLHttpRequest→xml-http-request). 코드에서는 이쪽이 원하는 결과입니다. 슬러그화는 이를 하나의 단어로 취급합니다(xmlhttprequest).
어느 쪽도 불용어를 제거하지 않습니다. 그 판단은 여러분의 몫입니다. 둘 다 텍스트 상자 전체를 하나의 문자열로 다루므로 줄바꿈도 하이픈이 됩니다. 제목은 한 번에 하나씩 변환하세요.
URL 슬러그 체크리스트
- 소문자만 쓰고, 서버가 대소문자가 섞인 요청에 응답한다면 그 변형은 리디렉션하세요.
- 단어 사이에는 하이픈을 쓰세요. 밑줄도, 공백도, 붙여 쓴 단어도 안 됩니다.
- 아포스트로피, 문장 부호, 남은 기호는 없애되 기호가 중요한 제목은 다시 쓰세요.
- 의미 있는 단어 세 개에서 여섯 개를 쓰세요. 군더더기는 자르고 뜻을 바꾸는 단어는 남기세요.
- 한 번 쓰고 건드리지 마세요. 안정적인 URL이 완벽한 URL보다 낫습니다.


