텍스트큐브는 '숫자 주소'와 '문자 주소' 두 가지 형식을 지원한다. 숫자 주소를 사용할 때 가장 큰 잇점은 언제나 단 하나의 주소를 유지할 수 있다는 점이다. 그러나 주소만으로 문서의 내용을 파악하기 힘든 단점이 있다. 문자 주소를 사용하면 주소만으로 문서의 내용을 짐작할 수 있지만 이 역시 몇 가지 문제가 있다. 먼저 한글 주소를 사용하면 실제 같은 글에 대한 주소가 다음처럼 총 세가지가 되 버린다.

첫번째 주소는 UTF-8을 지원하지 않는 검색 엔진에서 블로그 주소를 참조할 때 사용하는 주소이다. 한글을 주소에 바로 사용할 수 없기 때문에 URL 인코딩을 이용해서 한글을 인코딩하기 때문에 주소만으로 내용을 파악할 수 없다. 또 다른 주소에 비해 주소가 상당히 길어진다. 에서 문자 주소를 사용하면서 따로 주소를 지정하지 않으면 다음과 같은 검색 엔진에서는 첫번째 주소를 사용하게 된다.

두번째 주소는 UTF-8을 지원하는 검색 엔진에서 블로그 주소를 참조할 때 사용하는 주소이다. 구글처럼 UTF-8을 지원하는 검색 엔진에서는 두번째 주소가 사용된다. 마지막 주소는 숫자 주소로 주소 표시를 설사 문자 주소로 해도 숫자 주소로도 접근할 수 있다. 따라서 주소에 한글을 사용하면 이 처럼 하나의 글에 대해 세개의 주소가 생기기 때문에 글에 대한 접근성 문제가 발생할 수 있다.

그러나 이런 문제가 있어도 문자 주소를 사용하는 이유는 문자 주소를 사용하는 것이 검색 엔진 최적화(SEO: Search Engine Optimization)에 더 유리하기 때문이다. 다만 문자 주소를 사용하며 한글 주소를 사용하면 URL 인코딩된 주소처럼 주소로 문서의 내용을 알 수 없고 검색 엔진 최적화에도 도움이 되지 못하는 주소가 만들어진다. 따라서 요즘은 글을 올리면서 주소를 영어로 따로 지정해서 올리고 있다.

그런데 문제는 과거에 작성된 글에서 발생한다. 블로그를 처음 운영할 때 사용한 는 문자 주소를 지정하지 않았다. 또 로 판올림한 뒤에도 태터툴즈 시절의 습관 때문에 그냥 숫자 주소를 사용했다. 숫자 주소를 사용하다가 문자 주소로 바꿨기 때문에 영문 주소를 사용하는 글도 있지만 주소를 수정하지 못해서 아직까지 제목을 주소로 사용하는 글도 있다.

위에서 예로든 MSI 정보 삭제 유틸리티도 마찬가지다. 그런데 최근에 조금 이상한 현상이 발생했다. 원래 URL 인코딩된 주소로 접근해도 페이지가 표시되고 UTF-8로된 주소로 접근해도 페이지가 표시되어야 한다. 그런데 URL 인코딩된 주소로 접근하면 그럼처럼 페이지를 찾을 수 없다는 메시지가 출력되었다.

URL 인코딩된 주소를 URL 디코딩해서 확인해 보면 주소가 틀린 것은 아니었다. 결국 다음 문서들을 추적한 뒤 그 원인을 찾을 수 있었다.

삽질기

  1. rewrite.php로 문자 주소는 interface/blog/entry.php 파일이 처리한다는 것을 확인.
  2. entry.php로 $suri['value'] 값에 문자 주소의 일부만 저장되며, suri값은 ``library/suri.php` 파일이 처리한다는 것을 확인.
  3. suri.phprewrite.php로 $accessInfo['fullpath']에 경로가 잘못 저장되며, $accessInfo['fullpath'] 값은 library/config.php 파일이 처리한다는 것을 알 수 있었다.
  4. config.php 파일에서 Validator::validateArray($accessInfo, $basicIV);를 실행하면 $accessInfo['fullpath'] 값이 바뀐다는 것을 확인.
  5. Eolin.PHP.Core.php의 validateArray에서 $value = UTF8::bring($value);를 iconv("EUC-KR", "UTF-7", $value)로 바꾸면 정상적으로 동작하는 것을 확인.
  6. UTF8::bring에 문제가 있는 것으로 판단, UTF8::bring을 확인. 문제의 원인이 서버 설정에 있다는 것을 확인.

UTF8::bring의 마지막 문장은 return @iconv((isset($encoding) ? $encoding : $service['encoding']), 'UTF-8', $str);로 끝난다. 똑 같이 iconv 함수를 사용하며 최종적으로 UTF-8로 변환하는 문장이다. 다만 소스 인코딩은 변수로 넘어온 인코딩($encoding)과 서비스 설정값($service['encoding'])) 중 하나를 사용한다는 것을 알 수 있다. 따라서 변수로 넘어온 인코딩이 없고 서버의 설정을 UTF-8로 설정했다면 UTF-8을 UTF-8로 바꾸게 된다. 그러나 원 소스 문자열은 EUC-KR이기 때문에 한글 부분이 날라가는 것이었다. 따라서 이 문제를 해결하는 방법은 아주 간단하다.

  1. '텍스트큐브 관리도구/서비스 관리/서버'를 클릭한다.
  2. '인코딩'을 'UTF-8'에서 'EUC-KR'로 바꾼다.

사실 서버 설정에서 이 항목이 의미하는 바를 정확히 몰랐다. 그 이유는 EUC-KR로 설정해도 웹 페이지는 UTF-8로 생성되었기 때문이다. 따라서 여기서 인코딩을 설정하는 것이 어떤 의미를 가지고 있는지 알지못했다. 이 인코딩 값이 다른 곳에서도 참조하는지는 모르겠지만 URL 인코딩된 주소(결과적으로 EUC-KR 주소)를 UTF-8 주소로 바꾸면서 이 값을 사용하기 때문에 발생한 문제였다.

관련 글타래

2008/12/20 10:53 2008/12/20 10:53
글쓴이
author image
운영체제의 모든 것을 운영하고 있는 IT 블로거. IT 블로거라는 이름은 현재 시국때문에 시사 블로거로 바뀐 상태다. 그러나 나는 아직도 시사와 사회에 관심이 많은 IT 블로거일 뿐이다. 컴퓨터, 운영체제, 시사, 가족, 여행, 맛집, 리뷰등과 살면서 느끼는 소소한 일상이 블로그의 주제이다. 왼쪽의 아이콘은 둘째 딸 다예가 그린 내 모습이다.
오늘의 글
인기있는 글
조회수 많은 글 | 베오베
댓글 많은 글 | 베오베

Trackback

Trackback Address :: https://offree.net/trackback/2186

Facebook

Comments

  1. bluenlive 2008/12/20 12:51

    이런 글은... 음... 아무나 소통할 수 있는 수준의 글이 아닌 것 같습니다... 쿨럭.

    perm. |  mod/del. reply.
    • 도아 2008/12/21 13:33

      서버 설정만 EUC-KR로 바꾸면 된다는 글이니까요.

  2. 공상플러스 2008/12/20 12:55

    저도 잘 모르겠습니다.

    perm. |  mod/del. reply.
  3. 주성치 2008/12/20 14:51

    워드프레스에서는 카테고리 이름같은거 지정할때 "url친화적인 주소"(영어, 하이픈, 숫자)를 넣을 수 있게끔 되어있어서 좋더군요. "게임"카테고리라고 해도 주소는 블로그주소/game으로 하도록...

    SEO이슈는 글과 페이지별로 SEO를 해주는 플러그인이 처리 하구요

    perm. |  mod/del. reply.
    • 도아 2008/12/21 13:34

      텍큐도 가능합니다. 숫자로 표시할 수도 있고요. 다만 SEO는 플러그인만으로 처리하기는 힘든 부분입니다. 텍큐도 일부 SEO를 고려한 부분이 있기는 하지만요.

  4. zasfe 2008/12/20 21:01

    기존 테터버젼에서 사용한 글이 없어서인지 저같은 초보블로그에게는 조금 먼 이야기네요.
    다만 도아님처럼 설치형이시면서 이전부터 많은 글을 작성하셨던 분들에게는 다시금 생각해볼수 있는 계기가 될수도 있겠다는 생각이 듭니다.

    perm. |  mod/del. reply.
    • 도아 2008/12/21 13:35

      처음부터 영문 주소를 사용한 사람은 문제가 별로 없습니다. 숫자에서 문자로 바꾼 분들은 고민이 조금 되는 부분이죠.

  5. xacdo 2008/12/20 21:08

    저는 그냥 숫자 주소를 사용합니다. 내용만 좋다면 검색엔진에서 잘 찾아오겠죠.

    perm. |  mod/del. reply.
    • 도아 2008/12/21 13:36

      그런데 중요한 것은 SEO를 하면 더 잘 찾아옵니다. 그리고 태터툴즈 초기판은 원래 숫자만 되는 것 아닌가요? 저도 그 판에서는 숫자만 사용했습니다.

  6. 지하 2008/12/22 18:43

    조금 어려운 내용이지만 대략 알거는 같습니다. 그래서 전
    예전에 아예 주소를 숫자로 다시 바꿔버렸어요;
    (그랫더니 메타사이트에 글이 2중으로 수집되는 골치가
    생기긴 했었지만;;)

    perm. |  mod/del. reply.
    • 도아 2008/12/23 11:26

      숫자로 바꾸면 잇점이 있지만 SEO 측면에서는 역시 문자가 더 좋습니다.

댓글로 기쁨을 나눠요!

(옵션: 없으면 생략)

글을 올릴 때 [b], [i], [url], [img]와 같은 BBCode를 사용할 수 있습니다.