- IE7 이 URL 의 utf8로 전송한다. (기본값임)
- 서버측의 mod_url 이 다음과 같이 설정이 되어 있다.
CheckURL on ServerEncoding EUC-KR ClientEncoding UTF-8
이 조건에서, IE7 이 http://domain.com/한글.html 을 전송을 하면 실제로는
http://domain.com/%ED%95%9C%EA%B8%80.html
과 같이 "한글" 이 utf8 로 인코딩 되어 전송이 됩니다. (위에서는 편의상 urlencoding 을 했습니다. euc-kr 의 경우 인코딩을 하면 4byte 이지만, utf8 의 경우 6byte 가 되는 것으로 구분을 하기 위함입니다.)
그리고, 서버에서는 mod_url 이
iconv ("UTF-8", "EUC-KR", "%ED%95%9C%EA%B8%80");
이 성공을 하기 때문에
HTTP/1.1 301 Moved Permanently
Location: http://domain.com/한글.html
을 브라우저에게 전송하게 됩니다. IE6 의 경우 이렇게 전달된 주소를 그대로 이용하기 때문에 문제가 없었는데, IE7 부터는 이 주소의 "한글" 을 다시 UTF8 로 만들어 재전송하기 때문에 무한루프에 빠지게 되는 겁니다. 그래서 이를 해결하기 위해서 return 하는 Location 의 주소를 RFC1738에 의거하여 URL encoding 하여 브라우저로 전송해 주는 방법을 사용할 수 있습니다.
HTTP/1.1 301 Moved Permanently
Location: http://domain.com/%C7%D1%B1%DB.html
이를 해결하기 위해서는 다음 URL 을 참조 하시기 바랍니다.
KLDP.net mod_url project
OOPS.org mod_url CVS tree