[첫화면으로]Diary/IE버그의나비효과

마지막으로 [b]

/IE버그의나비효과

약 5년 전, 바야흐로 웹페이지의 인코딩이 euc-kr(또는 cp949)에서 슬슬 UTF-8이 대세가 되어가고 있었고,

이 홈페이지와 UseModWiki소스수정에도 그걸 반영하고 싶었으나... 일단 내부적으로 문자들을 처리하는 곳을 많이 뜯어고쳐야 했는데 당장 내가 인코딩이니 캐릭터셋이니 이런 거를 잘 몰라서 쉽지 않았다. 그래서 실제로는 2004년부터 유니코드 얘기를 하고는(유니코드논의) 3년이나 지난 후에 작업을 시작했음.

내부에서 위키페이지 텍스트를 처리하는 건 어찌어찌 할 수 있겠다 싶어서 본격적으로 UTF-8로 넘어가 보려고 했더니만,

원래 홈페이지에서 각 페이지의 URL은 wiki.pl?페이지이름이었는데,
  • 인터넷 익스플로러가 (버전 6과 7 당시. 그 이후 버전은 확인해보지 않음)
  • UTF-8로 인코딩된 웹페이지 내에 있는 링크를 클릭했을 때
  • 그 링크에 ?뒤에 한글이 포함되어 있으면
그 한글의 일부를 손상시킨 채로 전달하는 버그가 있었다.(유니코드논의/파일명인코딩)

따라서 위키 내에서 다른 페이지 링크를 걸어놔도 그게 한글로 되어 있으면 URL이 제대로 전달이 안 되니 클릭해봤자 그 페이지를 못 찾는다.

따라서 물음표 대신에 슬래시를 써서 wiki.pl/페이지이름 형태로 페이지 URL이 구성되게 했다.

그랬더니 뭐가 문제냐 하면, wiki.pl이 파일이름이 아니라 디렉토리 이름으로 해석되고, 그 뒤에 페이지이름이 실제 파일인 것처럼 해석된다. 페이지 자체는 그렇게 해석되기 전에 처리하기 때문에 별 문제가 없었는데, 페이지 내에서 아이콘 이미지 등이 상대경로로 적혀 있으면 죄다 애먼 디렉토리에서 찾으려고 한다.

따라서 상대경로로 적힌 주소들은 ./icons/아이콘.jpg에서 ../icons/아이콘.jpg 이렇게 한 단계 위로 끌어올려줘야 했다.

여기서 또 문제가 뭐냐 하면-_-;; UseModWiki하위페이지를 사용할 때 상위페이지와 구분하는 문자로 /를 쓴다는 거다. 즉 wiki.pl/상위페이지/하위페이지 형태가 되어서, 슬래시가 하나 더 생겼다ㅠㅠ 즉 하위 페이지를 볼 때는 디렉토리가 한 단계 더 들어간 걸로 해석되어 버린다. OTL (?를 쓸 때는 이 문제가 없었는데)

따라서 하위페이지냐 아니냐에 따라서 상대경로에 ../를 한 번 붙일지 두 번 붙일지 바꿔줘야 했는데, 이게 또 수정할 곳이 한두군데가 아니라서... 포기하고 아이콘,스타일시트,자바스크립트 등의 경로를 전부 절대경로로 지정하게 했다

그런데, 상대경로일 때는 위키를 서버의 어느 디렉토리에 설치하더라도, 그 디렉토리를 기준으로 찾아가니까 상관이 없는데, 절대경로로 표시하려면 설치하는 사람이 어느 디렉토리에 설치했는지를 적어주지 않으면 웹페이지 입장에서 알 방법이 없다. (pwd 등으로 스크립트가 존재하는 디렉토리의 절대 경로까지는 알 수 있지만, 웹브라우저에서 접근할 때는 그 중 어디까지가 URL에 들어가는 부분인지 모르니)

그래서 결국 $UrlPrefix라는 변수에다가 http://gypark.pe.kr/cgi-bin/wiki/ 이런 식으로 URL의 앞부분을 적어주도록 했다. 그리고 wiki.pl 소스 내에서 아이콘,이미지 등등을 출력하는 곳에 다 이 변수의 값이 들어가도록 고쳤다.

여기까지가 2007년 UTF-8이전작업할 때의 사연이고,

5년이 지난 오늘, html에는 base라는 태그가 있어서, 이 태그에 값을 주면 상대경로로 표시된 주소들을 전부 이 값을 기준으로 찾도록 강제할 수 있다는 걸 알았다... 게다가 이 UseModWiki에는 이미 그걸 고려한 설정 $SiteBase도 들어 있었다!!!

그러면 $UrlPrefix를 쓰지 않고 저 변수에 값만 넣어서 어떻게 해결할 수 있지 않았을까 싶기도 하다... (좀 전에 살짝 만져봤는데 그렇게 단순하게 해결되지는 않을 듯 하다만) 그래서 지금 살짝 망연자실 모드.

애초에 IE에 그 버그만 없었어도 그 수많은 삽질은 필요 없었을텐데ㅠㅠ 위키에서 하위페이지를 슬래시가 아닌 다른 기호로 표시했다면ㅠㅠ 내가 저 base 태그에 대해 알고 있었더라면ㅠㅠㅠㅠ
-- Raymundo 2012-1-30 5:38 pm

Comments & Trackbacks

뭐 그래도... 그 덕분에 요청이 euc-kr로 들어와도 utf-8로 들어와도 처리할 수 있게 수정도 했고... 예를 들어 위키피디아는 euc-kr로 페이지 이름을 요청하면 없는 페이지라고 안 뜨지만 내 홈페이지는 잘 뜬다고... 으쓱
-- Raymundo 2012-1-30 5:49 pm
이름:  
Homepage:
내용:
 


주인장분류

<<   /매너충만아저씨 (2012-02-10)[p]   | /IE버그의나비효과 (2012-01-30) |   /2012년설연휴 (2012-01-26)[n]   >>

Diary

최근 글들

코멘트와 트랙백

옛 글들

  • /Archive - 월별로 한번에 보기
  • /List - 전체 포스트 목록

RSS

주요 페이지

이 홈페이지의 인터위키는 다음과 같습니다.
GyparkWiki  UTF-8
https://gypark.pe.kr/wiki/


마지막 편집일: 2012-2-11 12:25 am (변경사항 [d])
1099 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기