IE7과 mod_url, CheckURL

2007/12/26 19:20

며칠간 IE7로는 내 블로그 한글 주소로 들어올 수 없었다. 예를 들어서 분류나 한글 검색이 안 되었단 이야기.

이것도 알긴 아는 건데 내가 자꾸 까먹으니까 간단하게 정리해두겠다.

IE7은 사용자가 한글 URL 집어넣으면 UTF-8로 바꿔서 전송. CheckURL이 켜져 있는 경우 서버에서 mod_url이 동작해 이 URL를 EUC-KR(설정이 그렇다면)로 바꾼다음 IE7에게 변환된 주소로 들어오라고 재전송. IE6 이하와는 달리 IE7부터는 이게 EUC-KR임을 확인하고 다시 UTF-8로 바꿔 전송하니 문제가 생긴다는 것 같다.

CheckURL을 꺼 두면 IE7이 요청한 UTF-8을 제대로 받는다. 태터툴즈/텍스트큐브는 원래가 UTF-8을 쓰니 이 주소는 잘 받는다.

CheckURL이 켜져 있는 상태에서 Firefox로 접속하면 서버의 mod_url이 동작, EUC-KR 주소를 주고 Firefox는 이 주소로 접속한다. 태터툴즈/텍스트큐브에서는 EUC-KR로 들어오려는 경우도 어느 정도는 처리할 수 있기 때문에 대부분 제대로 접속되나 "책", "타"를 비롯한 일부 문자는 제대로 처리되지 않는다.

내 추측인데 문자셋을 확인하는 방법으로는 해당 문자셋으로 쓰인 code를 분석하는 방법밖에 없을 테고 "책"이나 "타"같이 짧은 글은 EUC-KR로 쓰인 code라도 UTF-8로도 유의미한 code일 수 있기 때문에 오류가 생기는 것 같다. 짧을 수록 그 확률도 높을 테니까.

대충은 이런 사실을 알고 있었는데 내 텍스트큐브 블로그 루트 폴더의 .htaccess 파일 안의

#<IfModule mod_url.c>
#CheckURL Off
#</IfModule>

부분의 앞에 놓인 #이 C++의 preprocessor(맞나?) 같은 건 줄 알아서 신경 쓰지 않은 게 문제였다. 이거 주석처리다. 아, 바보같아. 아무튼 여기서 앞의 # 주석처리를 지운 게 .htaccess안에 있으면 아무 문제 없게 된다.

그냥 서버고 클라이언트고 죄다 UTF-8이 되는 날이 오는 게 제일 좋은 거겠지만….

고리 주소: http://ataiger.byus.net/tt/trackback/378
[로그인][오픈아이디란?]