2

블로그형 주소로 바꾸기

2008년 12월 7일



요즘 인터넷의 대세라고 할 수 있는 블로그들을 여기저기 서핑하다보면
페이지 주소가 꽤 간단하다는 사실을 알 수 있다.
그러니까, http://blog.com/1234 뭐 이런 주소로 개별문서가 접속이 된다는 뜻.

이 동네를 잘 모르는 사람들은 이게 뭐가 간단하다는 거고 뭐가 좋아보이는 건지 잘 모를 수도 있는데,
쉽게 설명이 될지 모르지만 일단 능력껏 쉽게 해보자.

일반적인 경우의 인터넷 주소체계는 보통 세 가지 정도라고 보면 된다.
첫번째, 디렉토리에 직접 접속하는 방법.
이를테면 http://www.sidhin.com 이렇게 들어오거나 http://www.sidhin.com/Gundam 이렇게 들어오는 방식.
두번째, 파일을 직접 불러오는 방법.
http://www.sidhin.com/index.html 이런 주소 방식이 대표적인 예겠지.
세번째, 파일에 변수를 넣어서 불러오는 방법.
http://www.sidhin.com/index.html?page=2 이런 방식인데
파일명 뒤에 변수 지정을 위한 구분자 ?를 붙여서 변수를 포함시키는 방법이다.
보통 데이터베이스와 연동되는 게시판 등에서 이런 주소를 쓸 수밖에 없다.

그런데 블로그는 일종의 게시판 형식으로 변수를 넣어서 데이터베이스를 불러와야 되므로
상식적으로 http://www.sidhin.com/blog.htm?idx=100 대충 이런 식의 주소체계가 나와야 정답일텐데
http://www.sidhin.com/100 이렇게 파일명도 아니고 디렉토리를 바로 불러오는 (것처럼 보이는) 방식을 취하고 있으니
이 어찌 간단명료하며 신기해보이지 않을소냐.

물론 세상에 신기한 것만 있겠어. 다 방법이 있으니까 저렇게 하겠지.
보통 저런 방식으로 웹페이지 접속을 하게하려면 두 가지 방법이 있는데
하나는 서버 세팅을 할 때 설정파일을 변경해주는 방법이 있고
다른 하나는 .htaccess라는 파일을 수정하는 방법이 있다.
특히 이 .htaccess 파일을 수정하는 경우 디렉토리마다 설정을 변경할 수 있어
호스팅사업을 하는 경우 계정서비스를 받는 고객이 각각 제 입맛대로 자신의 계정 접속설정을 변경할 수 있는 장점이 있다 하겠다.

그럼 나는, 이 홈페이지는 블로그를 지향한다고 하면서
왜 그동안 저런 간단한 접속방식을 쓰지 않고 파일주소에 변수를 포함하는 기다란 주소를 사용해왔느냐.

예, 사실 .htaccess 파일 설정방법이 생각보다 복잡해서요,
공부하기 귀찮아서 냅뒀습니다, 가 정답이 되겠다.

그런데 요며칠 갑자기 짧은 주소에 대한 강한 동경심이 발동걸려서
마침 회사 일도 한가하고 사는 것도 심심하던 차라
.htaccess 파일을 다시한번 디비파기 시작했다.

아, 다시 보니 복잡한 건 설정방법이 아니라 정규표현식이더구만.
정규표현식이라고 프로그래머들이 꽤 자주 써야되는 뭐 그런 게 있는데
솔직히 나는 아직도 정규표현식을 완전히 이해하고 있지 못한 나이롱 프로그래머.
이번 기회에 공부 다시 제대로 해볼까 했으나 역시 포기.
그래도 숱한 예제들을 디비다가 방법은 찾아냈다.
그리하여 어제, 2008년 12월 6일부터 내 홈페이지 주소 체계는 전부 도메인 뒤에 숫자가 붙는 형태로 변환 성공.

아래는 현재 내 홈페이지에 적용 중인 .htaccess 파일의 일부다.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} /([0-9]+)$
RewriteRule ([0-9]+) /w_read.html?read_no=$1

간단하게 설명하면,
RewriteEngine On은 .htaccess 파일에서 rewrite모드, 즉 주소를 순회시켜주는 기능을 켠다는 뜻.
RewriteCond %{REQUEST_URI} /([0-9]+)$은 접속자의 리퀘스트, 즉 익스플로러를 통해 입력받은 주소가 도메인 뒤에 숫자로만 된 형식일 때
(즉 http://www.sidhin.com/100 같은 경우. http://www.sidhin.com/abc 는 제외)
다음과 같은 형식으로 지정된 주소로 접속하라는 뜻.
RewriteRule ([0-9]+) /w_read.html?read_no=$1
즉 입력받은 숫자를 변수로 읽어 원래 접속방식인 w_read.html에 read_no라는 변수로 넣어 읽어오라는 뜻.

간단하네.
이렇게 간단한 걸 게으름 피우느라 안하는 거라니깐.
기왕 시작했으니 RSS피드도 다 바꾸고 앨범이랑 페이지 구분도 다 새로 작업하고 싶은데
아, 또 귀찮아지기 시작하네.
이거이거 세상 귀찮아서 볼일 못보지.
신혼여행기도 써서 올려야되는데. 아, 귀찮아.