https://web.archive.org/web/20161113051626/http://www.xeschool.com/xe/xenote_module_urls

URLs on XE

XE에서 생성한 URL 은 깔끔하고 검색엔진에서 색인되기 좋은 구조이다. XE는 일반적인 쿼리스트링 기반의 URL이 아니라 세그먼트 기반의 URL을 사용한다. 쿼리스트링(Query string) URL이란, 다음과 같이 쿼리 문자열을 포함하는 전형적인 URL 형식이다.

<http://www.xeschool.com/xe/index.php?mid=freeboard&document;_srl=123>

서버는 위와 같은 요청을 받게 되면, 물음표를 제외한 쿼리 문자열의 필드와 값(field1=value1&field2;=value2...)을 각각 한 쌍으로 구분하고 , CGI 프로그램 또는 웹 어플리케이션(Application Controller), 여기서는 XE코어에게 제출(submitted)하는 것이다. XE는 요청(Request) 받은 쿼리 문자열을 자신의 URL 규칙에 따라 세그먼트 기반의 문자열 형식으로 변경시킨다. ※ 이 기능을 사용하려면 웹 서버에서 rewrite_mod를 지원해야 하고 XE 제어판에서 짧은 주소 사용을 설정해야 한다. 만약 서버가 rewrite_mod를 지원하지 않는다면 쿼리스트링 기반의 URL을 계속 사용해도 전혀 문제 되지 않는다.

<http://www.xeschool.com/xe/freeboard>
<http://www.xeschool.com/xe/123>

세그먼트(String segment)란, 단어의 의미 그대로 문자열을 "단편, 조각"으로 분리하여 패턴 형식으로 만든다는 뜻이다. 즉 쿼리스트링 URL도 세그먼트 형식의 URL도 네트워크상의 같은 자원을 찾고 있지만 세그먼트 형식은 무척 간단하게 표현되고 쉽고 편리하다.

어떻게 이것이 가능할까?(How it is possible?)

XE는 대부분 모듈화 되어 있다. 회원관리, 레이아웃, 메뉴, 게시판 등 모두 독립된 프로그램 단위로 존재한다. 쉽게 말해 "초등학교" 모듈이 있다고 가정하자.

초등학교에서 "우진"이를 찾으려면 URL을 다음과 같이 작성하여야 한다.

/xe/index.php?초등학교=4학년&이름=우진

하지만 XE는 우진이라는 네트워크의 자원을 잘 알고 있다. 따라서 다음과 같이 작성해도 XE는 우진이를 찾아서 보여준다.

/xe/우진

"우진"이는 "초등학교" 모듈이 만들어 놓은 자원의 이름이다. 따라서 자원의 이름만 불러 주어도 XE는 우진이를 찾아서 보여 준다. 이것이 모듈의 아이디, 즉 mid 이고, 문서의 번호 document_srl 인 것이다. 게시판 모듈(board)이 새로운 게시판, 이름을 자유게시판(freeboard)이라고 생성하였다면 이 게시판의 고유한 모듈 아이디(mid)는 freeboard가 된다. 위에서 처럼 모듈의 아이디만 불러주어도 XE는 자유게시판을 보여줄 것이다. 그리고 자유게시판에 글이 작성된다면 board 모듈은 글 하나하나 마다 고유한 이름값을 붙여 둔다. 이것이 document_srl 즉 문서의 식별 번호이다. 마찬가지로 문서의 번호만 찾아달라고 요청해도 XE는 "아! 이 문서의 번호(123)는 board 모듈이 생성했던 자유게시판(freeboard)에서 몇번째 글이군! 내가 찾아서 보여주지!" ...^^

이렇게 모듈이 저마다 고유한 아이디와 식별 번호 붙여 생성한 자원은 영구적인 URL 주소값을 갖는다. 이것을 다른 말로 퍼머링크(permalink)라고도 표현하는데, "퍼머링크는 인터넷에서 특정 페이지에 영구적으로 할당된 URL 주소를 뜻한다. 이 주소는 한 번 정해지면 영원하다는 의미에서, 영구적인(permanant) 주소라는 뜻의 permanant link를 줄여 만든 말이다. 영구 링크라는 번역이 원의에 가깝지만 한국에서는 고유 링크고유 주소라는 명칭이 광범위하게 퍼져 있다. 퍼머링크를 사용하는 대표적인 사례는 블로그에서 볼 수 있다. 시간이 지남에 따라 새로운 내용이 추가되면서 블로그의 글은 위치가 쉽게 변하므로, 각각의 글에 영원히 고정된 주소를 제공하는 것이다."[위키백과 인용]

/xe/index.php?mid=모듈의 아이디&document;_srl=문서의 번호
/xe/?mid=모듈의 아이디&document;_srl=문서의 번호 // index.php가 생략된 경우