November 2008
M T W T F S S
« Oct    
 12
3456789
10111213141516
17181920212223
24252627282930

워드프레스에서 주소 체계 정할 때 조심할 점

[ 2008-Apr-13, 23시 38분] [ Category : 워드프레스, 잘난 척 하기 ] [ 엮인글수 : 16 ]

1. 문제 발생

워드프레스는 주소 체계를 이용자가 원하는 다양한 형태로 꾸릴 수 있는 기능을 제공한다. 이용자가 글 마다 주소를 만들어서 지정하거나 날짜, 혹은 글 번호 등 다양한 변수를 써서 주소를 꾸릴 수 있다. 한날의 낙서한날은 생각한다는 주소 체계를 /%postname%/ 라고 설정하고 글 마다 주소를 정하고 있다. (솔직히 아주 귀찮다. -_-)

이렇게 자유로운 주소 체계 가능하다보니 사람들이 워드프레스 주소 체계를 정확히 이해하지 않은 상태에서 주소를 만들어 쓰다가 낭패를 겪는 경우가 있다. 예를 들면, 글 주소 체계를 숫자로만 한 경우이다. 이 주소 체계는 글 숫자가 1000 미만인 경우 문제가 없지만 1000 이상이면 문제가 생긴다. 예를 들어보자.

이 글은 존재하는 글이지만 접근할 수 없는 글입니다.”라는 글의 낱장 주소는 http://www.hannal.net/blog/1023 이다. 그런데 이 글의 낱장 주소인 http://www.hannal.net/blog/1023로 접근하면 그런 글이 없다고 나온다. 이 글 미리보기 기능 주소인 http://www.hannal.net/blog/?p=1153&preview=true 로 접근해야 글을 볼 수 있다. 왜 이런 일이 생기는 것일까? 워드프레스의 오류(버그)일까?

2. 문제 원인

결론부터 말하자면 오류가 아니다. 나 조차 워드프레스 구조와 흐름을 꼼꼼히 살펴보지 않았을 때에는 워드프레스 오류라고 생각했었다. 이 문제는 사실 워드프레스 주소 체계와 기계의 고지식함(?)을 생각하면 아주 당연한 것이며, 따지고보면 이용자 부주의로 생긴 일이다.

워드프레스 주소 종류는 다음과 같이 나뉜다.

  1. 쪽 글(page) 주소 : /기본주소/쪽주소/
  2. 관리자 영역 주소 : /기본주소/wp-admin/
  3. 년도/달 단위 주소 : /기본주소/년도/달/
  4. 글 갈래 주소 : /기본주소/category/ (혹은 따로 지정 가능)
  5. 꼬리표 주소 : /기본주소/tag/ (혹은 따로 지정 가능)

이외 몇 가지 규칙이 더 나올 수 있는데 여기선 논외로 치자. 여기서 중요한 것은 바로 세 번째 항목인 “년도/달 단위 주소”이다. 만약 워드프레스를 “도메인/blog/”에 설치했을 경우 년도/달 단위 주소는 “도메인/blog/2008/04” 형태가 된다. 바로 이것이 문제(?)이다. 만약 글 주소 체계를 글 번호로만 하거나 혹은 글 주소 이름으로만 한 뒤 그 주소 이름을 1000 이상 숫자로 하는 경우, 그러니까 “도메인/blog/1000” 이런 식으로 할 경우 “년도/달 단위 주소”와 주소 규칙이 부딪히게 된다.

워드프레스는 기본주소 바로 뒤에 붙는 숫자가 1000 이상인 경우 이 숫자를 년도로 인식한다. 그러므로 글 주소가 워드프레스를 설치한 기본 주소 바로 뒤에 숫자 1000 이상인 경우 글로 접근하질 않고 1000년으로 접근을 한다. 당연히 1000년에 쓴 글이 없을테니 자료가 없다고 나오는 것이다.

3. 문제 해결

해결 방법은 간단하다. 글 주소를 기본 주소 바로 뒤에 숫자로만 붙게 하지 않으면 된다. 아니, 붙게 하더라도 그 숫자가 1000이상이 되지 않게 하면 된다. 혹은, 이 숫자 앞이나 뒤에 다른 문자열을 넣어서 년도와 구분을 해주면 된다.

해결 예제

  • /%post_id%/ => /archives/%post_id%/ , /entry/%post_id%/ , /a/%post_id%/ , 이외 글 주소와 년도/달 단위 주소를 구분 지을 문자열이면 아무거나 무관. (숫자 빼고 -_-; )
  • 혹은 아예 다른 주소 체계

굉장히 좋은 방법은 글 주소 구조에 해당 주소가 글 주소라는 걸 알 수 있는 낱말을 집어 넣는 것이다. /entry 라든가 /archives 같은 걸 넣는 것이다. 그렇게 하지 않고 나처럼 /%postname%/ 이렇게 하면 글 주소 이름을 숫자로 하지도 못하고, 그렇다고 글 주소를 한글로 하기도 애매해서 매번 글 주소 이름을 영문으로 짓느라 고생하게 될 것이다. -_-; 워드프레스 2.5에 주소체계 견본으로 /archives/%post_id%/ 가 괜히 있는 것이 아니다.

(굳이 변명을 하자면 난 워드프레스 1.2때부터 썼는데 당시엔 이런 배려가 없었으며, 예쁜주소(fancy url) 기능을 만들어주는 .htaccess 관리 정책도 지금과 완전히 달랐다)

덧쓰기 : 윽, 젠장. 이 글 주소에 wordpress를 오타 쳐서 wordpres 라고 쳤다. -_-

워드프레스로 만든 마이크로 블로그?

[ 2008-Mar-09, 15시 55분] [ Category : Ego & Persona, 워드프레스 ] [ 엮인글수 : 12 ]

미투데이를 비롯하여 나라 안팎으로 마이크로 블로그라는 가볍고 작은 소통 도구가 요즘 인기를 끌고 있습니다. 저는 미투데이를 1년 넘게 쓰고 있는데 사람과 사람을 이어주는 짧은 몇 마디 남기기가 참 매력있습니다.

그러다 최근 몇 달 이런 마이크로 블로그나 사람 관계(인맥) 관리 서비스에 몇 가지 불편한 경험을 했습니다. 서비스 자체 문제라기 보다는 사람과 사람 사이에서 일어나는 일이 문제지요. 그래서 거리를 좀 둬야겠다는 마음을 먹었습니다. 제 개인 얘기를 굳이 다른 사람과 일부러(?) 잇지 말고 제 개인 공간에 하는 것이 제게도 좋고 절 불편해하는 사람에게도 좋겠다는 생각한 것이지요.

처음엔 중얼거림을 남길 공간을 직접 다 만들려 했습니다. 투자할 시간은 단 하루. 글을 써넣고 꺼내보는 기능이면 끝이니 하루 투자하면 후다닥 만들 수 있겠다 생각한 것이지요. 그런데 이 공간에 대한 궁리를 이리 저리 하다보니 점점 필요한 기능이 늘어나 마침내 히말라야 꼭대기에까지 올라 훌륭한(?) 마이크로 서비스를 만든 상상을 하고 있더라고요.

결국 다시 재미거리들을 다 쳐내고 꼭 필요한 것들만 골라 냈습니다. 그래도 하루 안에 다 만들긴 좀 벅차 보였습니다. 밖에 있는 다른 글에 글을 건다거나 파일을 첨부하거나 무단 자동 광고를 막는 기능은 이리 저리 시험 및 실험을 많이 해야 하기 때문이지요. 각 기능마다 하루씩 필요해 보였습니다. 흐음, 이를 어쩐다?

고민 끝에 내린 결론은 워드프레스를 활용하는 겁니다. 이유는 두 가지입니다. 첫째, 4년 가까이 써온 도구라서 구조를 거의 파악하고 있고, 둘째, 껍데기(template)와 부가기능(plug-in)으로 확장할 수 있는 범위가 아주 넓어서 제가 원하는 기능이나 꼴을 이끌어 낼 수 있기 때문이지요. 워드프레스는 블로그 저작 도구이지만, 이 경우엔 웹 프레임워크 역할을 하는 셈입니다.

웹 프레임워크로 워드프레스를 결정하고 바로 개발을 착수 했습니다. 개발이라고 해봐야 사실상 껍데기(template) 개발이 전부였습니다. 어제 점심 먹고 바로 시작해서 오늘 점심 먹을 때쯤 다 만들었으니 정말 하루 걸렸네요.

자, 여기 그 결과물입니다. 짠! 이름하여

중얼 중얼 한날

입니다. 관리자 권한으로 접근하면 아래와 같이 글쓰기 영역도 함께 나옵니다.

글쓰기 영역이 있는 모습

그럴 듯 하죠?

워드프레스는 댓글을 보려면 해당 글을 낱장으로 열어야 합니다. 요즘 유행하는 Ajax + DHTML 방식으로 열지 않지요. 그래서 약간 꼼수를 부려 구현했습니다. 워드프레스에는 댓글을 돌출창(pop-up window)으로 따로 가져와 볼 수 있는 기능이 있는데, 이 화면 자체를 Ajax 로 가져와 출력하는 것이지요. 실험해보니 잘 되네요. :)

댓글은 누구나 달 수 있게 할까 말까 고민하다가 OpenID에 접속한 사람만 댓글 달 수 있게 했습니다. 무단 광고(스팸)이 귀찮기도 하고, 혼자말이 목적이라 열렬하게 모르는 누군가와 토론을 할 생각이 없기 때문입니다(OpenID 접속이 필수이면 귀찮아서라도 제 혼자말에 굳이 토 달지 않을테니까).

아참, W3C XHTML 1.0 Transitional도 깔끔하게 통과 했습니다. 으하하. 어지간히 디자인 끝내고 혹시 하는 마음에 슬쩍 찔러봤는데 한 번에 통과 했네요. (하지만 역시나 인터넷 익스플로러에선 화면이 좀 깨지나 봅니다. 밤에 고쳐야지 -_-)

맥 운영체제(Mac OS X) 일 때는 웹에서 글을 쓰고, 윈도우 운영체제 일 때는 Windows Live Writer로 글을 씁니다. 블로그와도, 서비스형 마이크로 블로그와도 맛이 색달라서 묘하면서도 좋네요.

그냥 새 공간 하나 더 열었다고 알리는 글 치고는 참 길게 주절거렸네요. 요즘 천덕꾸러기처럼 구박만 받았지 칭찬에 목 말라서 그런가 봅니다. 하하.