본문 바로가기

smells digital

익스프레스 엔진 1.2.3 - 외부 페이지의 경로 문제와 꼼수.

익스프레스 엔진(구 제로보드 XE, 이하 XE) 버전 1.2.3이 발표되었습니다.

1.2 이후 버전에는 기다리던 위키 기능이 포함되었습니다만, 아직 기능이 전문 위키보다 조금 기능이 떨어지긴 합니다.
어쨌든 XE에 위키 기능이 없다면 별도의 위키를 설치해서 회원 정보 쉐어, 통합 검색 등을 위해서 골치 썩어야 할 겁니다.

이전 버전에서부터 외부 페이지의 경로 문제가 있었습니다.

외부 페이지 기능 : XE의 게시판을 이용해서 작성하지 않은 외부 웹 문서를 메뉴와 레이아웃에 녹아들어서 하나의 사이트로 표시되도록 해주는 기능입니다.



1.2.3에 외부 페이지의 경로 문제 수정이 되었다기에 낼름 설치했습니다.
아직 버그가 있긴 있군요.

외부 페이지는 아래와 같습니다. 샘플용으로 만들어서 간단하지요.
사용자 삽입 이미지

XE의 어드민에서 외부 페이지 설정(그냥 id를 부여하고 경로 입력, 레이아웃 지정)하면 됩니다.

이때 경로 지정에는 "절대 경로"와 "상대 경로"에서 선택을 해야 합니다.

상대 경로는 XE가 설치된 위치에서 상대적으로 측정한 경로이고
절대 경로는 http부터 포함한 XE가 설치된 위치와는 상관없는 경로입니다.
즉 다른 사이트의 페이지도 가능합니다.


1. 절대 경로 이용

아래와 같이 호스트 이름까지 포함한 절대 경로를 넣었습니다.
테스팅용이므로 호스트 이름이 localhost입니다.
사용자 삽입 이미지

결과는? 파폭의 파이어버그로 어떻게 나오나 확인해보지요.
사용자 삽입 이미지

http://localhostjungle_v2/intro.... 식으로 "/"를 하나 빼먹었습니다.
이에 이슈 트래커에 테스트 케이스를 작성해서 등록했으니 금방 수정하겠지요.

2. 상대 경로 이용

이제는 아래와 같이 상대 경로를 넣었습니다.
사용자 삽입 이미지

결과는?
사용자 삽입 이미지

//User/~~~ 식으로 로컬 하드 디스크로부터의 절대 경로로 나와버리는군요.
웹 서버가 저렇게 접근을 할 수는 없거든요.


그럼 꼼수는?

XE가 외부 페이지를 읽어서 상대 경로로 지정된 부분을 수정하는데, 그 기능에 버그가 있기 때문에 문제가 발생하는 것입니다. 그래서? 그 부분을 절대 경로로 바꿔주면 됩니다.

문제는? 절대 경로로 처음부터 만들지 않는다는 것이지요. 처음부터 호스팅 서버에 올려서 작업을 하지 않기 때문에 절대 경로를 사용하기가 쉽지 않습니다.

또한, 외부 페이지의 특성상 XE를 통해서만 사용하라는 법은 없습니다. 즉 외부 페이지 자체가 하나의 독립된 웹 페이지로 존재하는 것이 재사용 측면에서도 좋고, 개발하는데 편하기도 합니다.


다소 번거롭지만 아래의 꼼수를 사용하고 있습니다.
주 아이디어는 php 변수를 이용하여 경로를 절대 경로로 바꿔버립니다.

즉, 아래와 같이 외부 페이지에 php코드로 절대 경로로 사용할 주소를 적어줍니다.

<? $intro_dir = "http://localhost/intro/" ?>   

그리고 실제 코드에서

<link type="text/css" href="<?= $intro_dir ?>jungle_intro.css" rel="stylesheet" />
<script type="text/javascript" language="javascript" src="<?= $intro_dir ?>jungle.js"></script>   

<img src="<?= $intro_dir ?>images/quick_link.gif">
<img src="<?= $intro_dir ?>images/contact.gif">

와 같은 식으로 사용하면 됩니다.

서버에 올려서 php코드를 서버에서 사용하는 절대 경로로 바꿔주면 되지요.

다소 번거롭기는 하지만, XE의 버그가 수정될 때까지 이렇게 사용하고 있습니다.


반응형