'apache2'에 해당되는 글 1건

  1. 2008.12.27 apache2에서AddDefaultCharset옵션


NeoZest 눈큰아이입니다.

어제 하나 고객으로부터 자신의 사이트를 UTF-8로 변경했는데, 그 다음부터 EUC-KR로 되어있던 검색엔진 관리자페이지가 깨져서 나온다는 연락을 받았습니다.
그런데 뒤적뒤적해보니 Meta태그내에 정상적으로 charset이 설정되어 있는데도 불구하고 깨져서 나오는 것입니다.
삽질하다가 문득 생각난 것이 Apache2의  AddDefaultCharset옵션입니다.

이 옵션의 사용법은 다음과 같습니다.
AddDefaultCharset [기본문자셋, 예를 들어 utf-8]

기본 문자셋으로 특정문자셋을 사용하겠다는 의미입니다.

여기에서 혼란스러운 점이 바로 Default의 의미입니다. Default는 기본값이라는 의미지요. 그럼 사용자가 임의로 페이지에서 다른 값을 설정하면 어떻게 될까요? 상식적인 수준(?)에서는 기본값이 있고, 사용자가 설정한 값도 있을 경우에는 사용자가 설정한 값이 우선이 되는데요. Apache2의 이 옵션은 Meta태그내에 Charset이 설정되어있더라도 이를 무시하고 그냥 강제로 지정된 문자셋으로 지정해 버리는 것입니다.

만약 이 옵션이 켜져있다면 다국어웹사이트는 물론이고, 우리나라처럼 여러가지 문자셋을 사용하는 웹사이트의 페이지들은 정상적으로 표시되지 않을 수도 있습니다.

쩝. AddDefaultCharset이라는 이름 대신에 ForceDefaultCharset이 더 적절하지 않았을까 생각해 봅니다.

그럼 가장 좋은 방법은 무엇일까요?
AddDefaultCharset옵션을 주석처리해버립니다. 그리고 모든 웹문서의 meta태그에 charset을 명시적으로 표시해 줍니다. 그러면 다국어/다중인코딩문제는 해결이 됩니다. 어떻게 보면 당연한 말인데, 잘 안지켜지지요. 자신이 어떤 문자셋을 사용한 문서임을 HTML에서 명시적으로 표시를 해야 하는데 말이죠.

몇몇 블로그에 보면 AddDefaultCharset을 연속으로 여러번 적으면 된다고 하는데, 이는 잘못된 정보입니다. 여러개의 동일옵션이 있을 경우 가장 마지막에 적어준 옵션값이 적용됩니다.

그리고  'AddDefaultCharset off'를 사용하는 것보다는 그냥 앞줄에 '#'을 추가해서 주석처리하는게 가장 확실하겠지요.

삽질을 두번하지 않기 위해 정리해서 올립니다
Posted by NeoZest