Trace foward

바람직한 URL 설계

URL(Uniform Resource Locator)은 "자원(Resource)을 가리키는 고유한(Uniform) 지표(Locator)"를 말한다. 웹의 경우, 자원은 "웹 페이지"이고 지표는 "http://"로 시작하는 웹 주소다. 즉, 웹 URL은 특정 웹 페이지를 가리키는 고유한 주소인 것이다.

여기서 주목해야할 단어는 "고유한(Uniform)"이다. 예를 들어 주민등록 번호는 고유하다. 이는 주민등록 번호로 한 사람을 특정할 수 있으며, 한명의 사람은 한개의 주민등록 번호를 가진다는 의미이다. 다시말하면, URL을 통해 우리는 그에 해당하는 웹 페이지를 특정할 수 있으며 한 웹 페이지는 하나의 URL만을 가져야 한다는 의미다. 실제로 그러한가?

인터넷 한겨레 사이트를 한번 살펴보자. 이 매체의 홈페이지 URL은 "http://hani.co.kr/"과 "http://www.hani.co.kr/" 두가지이다. 문제는 "hani.co.kr"로 들어가면 모든 기사의 URL이 "http://hani.co.kr/..."로 시작하고, "www.hani.co.kr"로 들어가면 모든 기사의 URL이 "http://www.hani.co.kr/..."로 시작한다는 것이다. 어느 쪽이 정확한 URL 주소일까? 구글에서 "인터넷 한겨레"로 검색해보니 주소가 "www.hani.co.kr"로 나온다. 아마도 인터넷에는 이 주소로 링크된 경우가 더 많은가 보다.

나의 경우는 한겨레 사이트를 자주 방문하는 편이라, URL을 기억해서 웹 브라우저 주소창에 "hani.co.kr"이라고 입력하는 것이 보통이다. 때문에 한겨레 사이트에 방문하거나 특정 기사를 링크할 때, 자연스럽게 "http://hani.co.kr/..."로 시작하는 주소를 사용하게 된다.

이 문제는 비단 한겨레 뿐만 아니라, 조선일보, 동아일보, 프레시안 등 언론사 사이트를 포함한 여러 국내 사이트에 공통적으로 나타나는 현상이다. 사소한 부주의 때문이겠지만, 이 문제의 파급은 의외로 크다.

특정 페이지의 URL이 여럿인 경우, 외부 사이트에서 이 페이지에 링크가 걸릴 때도 제각각의 URL이 사용된다. 대부분의 검색 엔진은 웹 페이지를 인덱스할때 외부 사이트에서 얼마나 많은 링크가 걸린 지를 주요 지표로 사용하는데, 동일한 페이지가 다른 URL로 링크된다면 당연히 검색 인덱싱에 있어 불리할 것이다.

데이터를 활용하는 입장에서도 불편함이 있다. 예를 들면, URL의 도메인 부분을 기준으로 링크 데이터베이스를 만드는 경우이다. 실제로는 같은 페이지인데 도메인(서브도메인)이 다르기 때문에 다른 사이트의 페이지로 인식이 되는 문제가 있다.

해결법은 뭘까? 해당 페이지의 공식 URL이 어떤 것인지를 명확히 정하고, 비공식 URL로 접근시 "301 moved permanently" HTTP 헤더를 사용하여 공식 페이지로 리디렉트 시키는 것이다.

트랙백 주소:
yong27  2009/3/24 오후 7:50
http://miya.pe.kr/archives/107 를 보니까, 이미 이 문제를 위한 해결방안이 자리를 잡아가는 듯 합니다. 제 개인 사이트들에도 모두 적용했더니, 검색결과가 하나로 모이는 듯 합니다. (아직 확실하진 않습니다.)

大山  2009/3/25 오후 12:29
@yong27: 안그래도 URL 파라미터의 경우가 좀 애매하다 싶었는데 좋은 해결책이 나왔군요. :)

늘하  2009/12/15 오전 1:09
uniform이 고유하단 뜻이 맞나요?
미내르바 연재를 읽고 감동하여 이 글도 읽고 있습니다만.
URL에서의 uniform은 resource를 식별하는 통일된(정해진)형식이라는 뜻에 더 가까운거 같다는 생각이 드네요.

大山  2009/12/15 오후 10:56
@늘하: 늘하님 반갑습니다.

여기에서 uniform은 "불변의", "일정한" 정도의 의미입니다. 저는 약간 의역해서 "고유하다"는 표현을 썼습니다. 이 맥락에서 uniform의 여러 의미와 어감을 가장 비슷하게 표현하는 우리말 단어가 아닐지요. 설명하신 것처럼 uniform에는 "정해진"이란 의미도 내포돼 있습니다.

다만 "통일된"은 조금 벗어난 의미일 듯 합니다. 그런 경우라면 "unified" 정도가 적절할 듯 하네요. :)