아파치 UTF-8 URL은 불가능한 것인가

return0의 이미지

겂없이 CentOS 4.4 64Bit를 설치해서 서버를 구성하고 있는 중입니다.
APM은 소스 설치를 해보려다 php컴파일시 죽었다 깨어나도 libpng를 찾지 못해 포기하고
RPM으로 APM을 구성하였습니다.

주 용도가 웹서버인데 테터툴즈나 제로보드5 등 향후 많은 곳에서 UTF-8을 사용하리라 예상되고
개인적인 고집도 있고해서 UTF-8로 모든 문자셋을 맞췄습니다.
그리고 좌절했습니다.

먼저 euc-kr 환경에서 운영하던 기존 홈페이지(제로보드기반)를 마이그레이션하는데
많은 난관이 가로막았었습니다.
kldp와 phpschool 등 여러곳을 찾아 거의 모든 문제를 해결했지만 마지막 문제는 벽에 가로막혔습니다.

아파치에서 UTF-8로 된 URL을 처리하지 못하더군요
http://asgard.pg.pe.kr/테스트.html 과 같은 문서는 절대 읽지 못합니다.

[Sun Jan 14 20:15:09 2007] [error] [client 221.145.58.226] File does not exist: /home/asgard/public_html/\xc5\
xd7\xbd\xba\xc6\xae.html

(참고로 시스템 문자셋도 UTF-8입니다.)

하지만 http://asgard.pg.pe.kr/%ED%85%8C%EC%8A%A4%ED%8A%B8.html 처럼 UTF-8로 인코딩된 주소는 처리를 합니다.(당연하겠죠?)
문제는 한글이 포함된 파일도 상당히 많으며 한글로 링크가 걸린경우 처리를 하지 못한다는것입니다.

mod_url.so라는 아파치 모듈을 이용하여 이 문제를 해결하려 했으나
OS가 64bit이라서 그런지 모듈을 로드해도 엉뚱한 문자로 변환하여 쓸모가 없습니다.
예를 들어 위 테스트 주소 같은 경우 http://asgard.pg.pe.kr/?뚯뒪??html 처럼 주소를 변환하더군요

제가 잘못 알고있는 것인지 모르지만
아파치와같이 폭 넓게 여러 나라에서 쓰이는 슈퍼스타가
아직도 한글같은 UTF 주소 처리를 명쾌하게 못한다는데 적지않게 놀랐습니다.
(모듈을 로딩하여 해결하시는 분들도 있지만 "근본적인" 해결책이 없어서 놀랐습니다.)

서버 덕분에 주말을 컴퓨터 앞에서 보내느라 쉬질못해 다음 주 한 주가 정말 두렵습니다.
주말을 허망하게 날려버린 불쌍한 저에게 힘을 주실만한 정보 아시는 분 없으신지요

송효진의 이미지

[url]http://xenosi.de/show.s/가나다/한글입니다.html?asdf=한글인가요[/url]

위 url 은 디렉토리를 그냥 출력하는 예제 입니다.
보시면 한글이 깨지지 않음을 알 수 있습니다.

하지만 뒤의 asdf 변수의 한글은 깨졌죠.

결론은 익스플로러는 ? 이전까지는 '아무런 변환도' 하지 않습니다.

euckr 웹페이지에서 링크 거는 경우에는 당연히 euckr 로 보내질 테니 안되겠지요.

이 경우에는 404 를 php페이지로 리다이렉트 해서 iconv 로 변경할 수 밖에 없을듯 합니다.

그 외의 경우라면 파일명이 utf-8 로 잘 들어있기만 하면 잘 나옵니다.

emerge money

return0의 이미지

적어주신 URL은 아래와 같이 나옵니다.

????????????html
Array
(
[asdf] => ???????

문자셋을 euc-kr로 변경하면 다음처럼 나옵니다.

가나다/한글입니다.html
Array
(
[asdf] => 한글인가요
)

시스템 LANG 설정은 UTF-8로 되어있습니다.
물론 생성한 파일도 UTF-8 문자셋의 파일명으로 되어있습니다.

제가 뭔가 잘못하고 있는거겠죠? 익스플로러 세팅에 문제가 있을까요?

익명사용자의 이미지

서버 입장에서는 받은 문자열이 url encode 되었던지 아니던지간에

utf-8 인지 euc-kr 인지 알 수 없습니다. 추측할 뿐이지요.

http://kldp.org/node/35160 보시면 아시겠지만, 명확한 해답은

없습니다.

only2sea의 이미지

그것이 IE에서는 그렇고, 오페라나 파이어폭스에서는 정상적으로 동작을 합니다. 이상하게도 IE에서는 항상 UTF-8로 보낸다고 체크를 해도 ?의 오른쪽에 있는 것은 그것이 적용되지 않는가봅니다.

이제는 서명에 무엇을 써야하는지 생각해보자.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.