CentOS에 mod_url 설치
아파치와 한글 포함 URL 문제로 며칠째 밤 잠 설치는 사람입니다.
시스템을 UTF-8로 구성하였는데 (시스템, apache, php, mysql)
아시다시피 IE사용자들이 UTF-8 URL보내기를 체크한 사용자도 있고 체크하지 않는 사용자도 있습니다.(체크 해제가 더 많겠죠..)
두 가지 모두 대응을 하려면 apache에서 UTF-8이 아닌(euc-kr이겠죠) URL을 받았을때 UTF-8로 바꿔줘야 하는데
KLDP의 많은 분들의 도움으로 mod_url.c 를 설치했습니다.
문제는...
해당 파일을 설치했는데 UTF-8이 아닌 한글을 인코딩할 때 UTF-8문자가 아닌 괴상한 문자로 변환하고 있습니다.
테스트 결과 RH FC2에서는 정상적으로 컴파일 후 작동을 합니다만
CentOS 4.4 i386버전과 x86_64버전에서만 작동을 하지 않고 있습니다.
CentOS에 해당 모듈을 설치해서 이상없이 EUC-KR URL을 UTF-8 URL로 변경 되시는 분 있습니까?
APM을 모두 RPM으로 깔았는데 (죽어도 컴파일이 안되는 부분이 있어서...) 그런 이유인지....
컴파일은 정상적으로 됐지만 이상한 문자로 인코딩 하는 턱에 mod_url 모듈으 사용하는 의미가 없네요
예를 들어 테스트.html이라는 문서를 URL에 적으면
아래와 같이 인코딩을 다시 합니다.
?뚯뒪??html
최후의 방법이라고 생각했던 모듈마저 돌아가지 않고 참 난감합니다.
괜히 64bit OS를 설치했나 싶었는데 i386에서도 마찬가지이구요
?다음의 인자값을 엉뚱하게 인코딩하는 통에 한글을 ?뒤에 넘기는 URL은 처리를 제대로 하지 못하네요
며칠째 늦은 시간까지 테스트 했더니 서서히 지처가기 시작했습니다.
이래저래 해결이 안되면 페도라로 옮겨가려구요..
아파치의 debug를
아파치의 debug를 켜고, /var/log/httpd/error.log를 살펴보심이..
아파치의 Debug 혹은 Warn 메시지를 켜는 옵션은 아파치 httpd.conf파일에 있습니다.
네 에러로그도
네 에러로그도 열심히 살펴봅니다만
에러가 아닌지라 남는 에러로그는 없습니다.
아파치로 인자를 한글로 넘길 때 발생하는 문제라 아파치의 에러로 잡히지는 않는가 봅니다.
엉뚱한 문자열만 던지고 있는는거겠죠...
httpd.conf에서 로그
httpd.conf에서 로그 켜는 옵션이 있습니다. 이걸 켜면, url이 변환된다는 메시지가 나옵니다.
예를 들어 님께서 IE의 UTF-8로 항상 보내기 옵션을 끄셨다면 url창에는 EUC-KR코드가 서버에 보내지는 것이고,
서버의 코드가 UTF-8이라면 EUC-KR파일이 없는 상태이므로 이때 mod_url이 작동하게 되고 아파치 로그에 남습니다.
변환이 성공적이라면 (iconv가 정상 작동했다면 그 메시지도 같이 나옵니다. iconv가 실패해도 메시지가 나오고)
이게 전혀 문제가 없다면 mod_url은 정상 작동하는 것이죠.
혹시, 서버의 파일 시스템은 무엇인가요? 파일시스템이 jfs(?)인가 할 경우는 파일 시스템의 charset 지정도 살펴보셔야 합니다.
답변에
답변에 감사드립니다.
서버 파일시스템의 문자셋은 UTF-8입니다.
그런데 로그 켜는 옵션이라는게 아파치에 log레벨 debug 말씀하시는건가요?
아니면 mod_url 로그남기기에 관한 옵션이 따로 존재한다는 말씀이신가요?
일단 log레벨을 debug로 해놓고 log를 더 살펴보기로 했습니다.
버추얼호스팅을
버추얼호스팅을 해놓고 다른 로그를 보고 있었네요
debug로 해 놓으니까 메세지가 확인 되었습니다.
서버의 문자셋이 UTF-8로 되어있고 테스트.html 이라는 파일을 억세스 해봤습니다.
UTF-8로 항상 보냄을 체크하면 당연히 제대로 값이 전달되어 테스트.html파일을 읽어왔고
UTF-8체크해제 후에는 다음과 엉뚱한 문자로 컨버팅을 하여 아래와 같은 로그가 남았습니다.
[Thu Jan 18 12:50:49 2007] [debug] mod_url.c(239): [client 59.10.185.36] Orig URL: /\xc5\xd7\xbd\xba\xc6\xae.html /home/asgard/public_html url:/
[Thu Jan 18 12:50:49 2007] [debug] mod_url.c(274): [client 59.10.185.36] ICONV: from uri /\xc5\xd7\xbd\xba\xc6\xae.html to /\xed\x85\x8c\xec\x8a\xa4\xed\x8a\xb8.html(12->15): CHECK CODE '0'
[Thu Jan 18 12:50:49 2007] [debug] mod_url.c(296): [client 59.10.185.36] Fixed URL: /\xc5\xd7\xbd\xba\xc6\xae.html to /\xed\x85\x8c\xec\x8a\xa4\xed\x8a\xb8.html
익스플로러 창에는 ?뚯뒪??html 라고 변환되어있습니다.
EUC_KR로 전달한 문자를 제대로 변환 하지 못하고 있습니다.
그리고 이것외에 ? 다음에 인자로 전달하는건 아예 변환도 되지 않습니다.
제대로 변환되고
제대로 변환되고 있네요. mod_url은 정상 작동하고 있습니다.
보낸 문자셋은 euc-kr이고, 변환된 문자열은 utf-8입니다. 익스플로러 창에 보이는 이상한 문자는 utf-8이구요.
서버 문자셋을 utf-8이라고 해놓구선, 서버에는 정작 그 파일이 없거나, 익스플로러의 문자셋을 뭔가 잘못 설정하신 것 같네요.
댓글 달기