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

[ 2008년 04월 13일, 23시 38분] [ 글 갈래 : 워드프레스, 잘난 척 하기 ]

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 라고 쳤다. -_-

16개의 댓글과 엮인글이 있습니다.

  1. 민노씨:

    데자뷰.. ㅎㅎ

    농담이고요.
    처음에는 기본주소 뒤에 /blog 라는 문자주소가 있는데 왜 그걸 인식못한다고 하나.. 이랬는데, 다시 생각하니 /blog까지를 ‘기본주소’로 인식한다는 것 같네요. 제가 가끔 멍할 때가 많아서 말이죠.

    그럼
    엄마주소 : http://www.hannal.net
    자식주소 : http://www.hannal.net/blog 라고 했을 때 각각에 워프를 따로 설치하는 건가요? (이게 무슨 질문이나 되는건지는 모르겠습니다만.. )

    그리고
    그런 자식주소들을 가진 경우에는 그 뒤에 각각 따로 문자주소를 따로 설정해야 한다는 취지인지
    가령
    자식주소 : http://www.hannal.net/blog/entry/
    이런 식이 되어야 한다는 것인지요?

    워프 주소선택 설정의 경우엔 숫자주소를 지원하고 있잖아요.
    그리고 그걸 선택하면 당연히 숫자주소로 표기되구요.
    거기에는 /archives 가 부가해서 붙는 것 같은데요.
    각 자식주소로 ‘숫자주소’를 선택하면 /archives 가 당연히 붙으니, 말씀하신 문제는 발생하지 않게 되는 것인지…

    문득 이것저것 궁금해서(너무 초딩틱한 궁금증이긴 하지만요).. : )


    comment at 2008/04/13
  2. 한날:

    햐햐. 워드프레스가 설치된 주소가 /blog 인 경우 그 주소까지를 기본 주소로 판정합니다. 물론, 설치 주소와 서비스 주소를 다르게 설정 할 수도 있고요.
    .
    만약 엄마 주소와 자식 주소 모두 독립된 워드프레스를 운영한다면 따로 설치해야 합니다만, 위와 같은 주소 구성은 좋은 구조는 아닙니다. 물론 몇 가지 주의만 하면 문제는 안되지만, 그 몇 가지 주의 사항 때문에 괜히 신경 쓰이기도 하고 혹시나 그 주의 사항을 까먹으면 이래 저래 나중에 귀찮아지므로 권장할 만한 방식은 아니겠지요.
    .
    하지만 엄마 주소와 자식 주소가 나눈 이유가 따로 워드프레스를 구분해서 돌리는 게 아니라 단지 자식 주소가 엄마 주소에 속하는 개념일 뿐이라면 엄마 주소에 워드프레스를 설치해서 꾸려도 됩니다.
    .
    워드프레스 관리자 영역을 보면 주소 체계를 이용자가 따로 정할 수 있습니다. Custom 을 고르면 따로 주소를 정할 수 있는데 여기에 /%post_id%/ 라고 하면 이 글에서 다룬 문제가 발생할 여지가 생기는 것이지요. 그래서 워드프레스에서 숫자 주소 견본을(Numeric) 누르면 /archives/%post_id%/ 로 나오지요. 물론 이 archives 는 취향대로 바꿀 수 있습니다. 즉, 워드프레스에서 제공하는 주소 체계를 잘 따르면 이 글에서 다룬 문제는 안생깁니다. :D


    comment at 2008/04/14
  3. 민노씨:

    아항, 그렇군요!
    그렇다면 자식 사이트에서 워프 기본 주소 설정(디폴트 설정)을 선택한 경우
    위 문제가 발생할 여지가 있는 것인가요?
    아니면 없는 것인가요? (워프에 대해선, 다른 툴도 마찬가지긴 하지만, 워낙 몰라서요.. ㅡ.ㅡ;)


    comment at 2008/04/14
  4. 한날:

    엄마나 자식과는 상관 없고요. 엄마건 자식이건 숫자로 된 글 주소가 워드프레스 기본 주소 바로 뒤에 붙지만 않으면 됩니다. :) 예를 들게요. 워드프레스를 hannal.net 에 설치했을 경우
    .
    - hannal.net/1234 => 문제 생김
    - hannal.net/asdfjkl/1234 => 문제 없음.
    .
    입니다. 이때 asdfjkl 은 워드프레스 주소 구조 설정에서 가상으로 써넣을 수 있습니다. 현재 워드프레스 주소 구조 설정 중 숫자(Numeric)을 고르면 자동으로 /archives/숫자 이렇게 되죠? 여기서 archives 처럼 숫자 앞에 아무 문자열을 넣어주면 문제가 생기지 않습니다. 즉, 글 주소 숫자랑 년도/달 주소 숫자랑 구분을 하면 되는 것이지요.
    .
    워드프레스에서 숫자 주소 체계 기본(default) 구조는 “/archives/%post_id%/”입니다. 여기서 %post_id% 가 글 고유 번호인데요. 이걸 Custom Structure 에서 “/%post_id%/”라고 하면 hannal.net/1234 구조가 되므로 문제가 됩니다.
    .
    물론, 워드프레스를 hannal.net/blog 에 설치한 경우 hannal.net/blog/1234 는 문제가 되지만 hannal.net/blog/아무글자/1234 라면 문제가 없습니다.
    .
    이 방식은 텍스트큐브 등에선 발생하지 않습니다. 정확히는 년도/달 주소 구조가 블로그 도구 기본 주소 바로 뒤에 숫자로 붙지 않으면 생기지 않는 상황이에요. :)


    comment at 2008/04/14
  5. 민노씨:

    아, 이제야 명확히 이해가 됩니다. : )
    초등학생에게 가르침을 주시느라 노고가 크셨네요. ㅎㅎ


    comment at 2008/04/14
  6. 한날:

    노고는요. 나중에라도 제 글을 이해 못하시는 분이 계실 경우, 위 댓글들이 많은 도움이 될 겁니다. 어차피 할 일이라면 미리 하는 것도 나쁘지 않죠~ :D


    comment at 2008/04/14
  7. 작은인장:

    제가 볼때는 한날님의 글이 정확한 것이라면 (정확하겠죠? ^^)
    워드프레스의 오류가 맞는 것 같아요.


    comment at 2008/04/14
  8. unfusion:

    저도 처음에 기본 주소 형식을 사용하다 나중에 주소 체계를 변경하면서 중간에 /archives/ 를 넣을까 말까 고민했었습니다. 이미 만들어 놓은 Archives 페이지와 충돌을 일으켰거든요. 결국 s 를 빼는 것으로 결정했는데 이런 문제점이 있었네요. 주소체계를 변경하실 분들에게 좋은 정보가 될 것 같습니다.


    comment at 2008/04/14
  9. 가즈랑:

    글을 천 개 적을 날은 까마득히 멀지만, 그래도 좋은 정보 알고 갑니다. 이런줄 모르고 글이 없다는 오류를 만났다면 정말 답답했을 거 같습니다.


    comment at 2008/04/14
  10. 한날:

    # 작은인장님/
    네, 제가 파악한 상황은 정확합니다. 그래서 워드프레스 오류라기 보다는 배려 부족으로 보는 것이죠. :) 블로그 기본 주소 바로 뒤에 /%post_id%/ 이런 주소 체계를 쓰지 못하도록 워드프레스 기능 차원에서 막아야 할 텐데 말이죠. 워드프레스 포럼에 제안 해야겠습니다.
    .
    # unfusion님/ 네. 우리말이나 영어로 된 정보를 찾을 수 없는 걸 보면 아직 이 난감한 상황을 겪은 분이 없나 봅니다. 오래 운영했거나 글을 1000개 이상 쓸 정도면 예전 주소 체계를 쉽사리 바꿀 수도 없을텐데 부디 이 글이 그런 난감한 상황을 예방하는 계기가 되길 바라 봅니다 ^^
    .
    #가즈랑님/ 저도 처음 저 문제를 맞닿뜨렸을 때 아주 당황했습니다. 처음엔 Apache 웹서버 문제인가 생각했는데 tistory 등은 1000 이상 되는 숫자 주소를 잘 쓰는 걸 보면 분명 워드프레스 문제(?)였거든요. :D


    comment at 2008/04/14
  11. dh:

    좋은 정보 고맙습니다.


    comment at 2008/04/14
  12. 한날:

    좋은 정보가 되었다니 다행이에요. :D


    comment at 2008/04/14
  13. 블로그나라:

    한날님이 지적하신 문제는 워드프레스의 문제가 아닐 수도 있을 것 같습디다.
    참고로 pcwinvista.com 을 보시면 /%post_id% 로 주소가 정해져 있고 1000이 넘어가도 아무 문제가 없음을 확인할 수 있습니다.
    어쩌면 버전 2.5.1 이전에는 문제였지만 2.5.1에서 해결이 된 것인지도 모르겠습니다.
    pcwinvista의 경우는 실제 포스트 수가 1000을 넘는 것이 아니라 티스토리에서 wp로 이전과정에서 db import를 두번 하는 바람에 이전 후의 포스트가 1000 단위 id를 갖게 된 것이라 실제 포스트 수가 1000을 넘기면 문제가 발생할지도 모르지만, 실제로 문제가 발생할 가능성은 거의 없을 것으로 생각합니다. 어차피 wp_post ID 가 URI 로 넘어가고 이 ID는 이미 1000을 넘긴 상태이니까요.


    comment at 2008/06/29
  14. 블로그나라:

    위에서 ‘같습니다’ 를 ‘같습디다’로 적었네요. :( ~디다 라는 어감이 별로 좋게 들리지 않아 이렇게 정정합니다. ^^


    comment at 2008/06/29
  15. 한날:

    :) 블로그나라님 댓글을 보니 /%post_id% 문제 보다는 /%postname% 이 문제인지도 모르겠군요. 제 블로그는 /%postname% 으로 주소 체계를 쓰고 있는데, 이 경우엔 재현율 100%로 문제가 발생하고 있습니다. /%post_id% 는 문제가 없는지도 모르겠군요. 이건 제가 확인을 못했습니다. 좋은 말씀 고맙습니다.


    comment at 2008/06/29
  16. 피엡:

    Draft 상태에서 발행하지 않고 지우는 글이 많다보니 ID 숫자가 무척 빠르게 늘어나고 있어 걱정했었는데, 블로그나라님 댓글을 보니 걱정하지 않아도 될 것 같군요. 퍼머링크 체계를 바꿔야 하나 고민했는데… ^^


    comment at 2008/10/21

댓글을 남기시면 좋은 일이 생길 겁니다.



XHTML: 옆의 HTML 태그를 사용할 수 있습니다 : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>