포럼
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
서드파티에서 Rewrite Rule을 쉽게 추가할 수 있도록 코어를 수정하고 있습니다.
2014.01.21 00:07
코드이그나이터에는 라우터(Router)라는 기능이 있는데요. 이 기능을 이용해서 custom rewrite rule 정의가 가능합니다.
반면에, XE에는 미리 작성된 .htaccess 파일이 있고, 정해진 rewrite rule만을 사용할 수 있습니다.
새로운 모듈을 추가하면, 해당 모듈에 최적화 된 URL을 제공할 필요가 있는데, 현재 XE에서는 아래와 같이 제한된 짧은 주소를 지원하고 있습니다.
http://사이트주소/모듈명
http://사이트주소/모듈명/게시물번호
http://사이트주소/게시물번호
http://사이트주소/가상사이트/모듈명
http://사이트주소/가상사이트/모듈명/1234
http://사이트주소/모듈명/(rss|atom)
http://www.xpressengine.com/index.php?mid=userForum&act=dispBoardWrite
이러한 주소는 보기에도 지저분해 보이고 직접 (주소를 쳐서) 접근하기에 불편함이 많습니다.
또한, SEO에 최적화 된 URL이 아니기 때문에 검색 우선순위에서 밀려난다는 단점이 있습니다.
위 URL을 정리하면 아래와 같이 만들 수도 있겠죠.
http://www.xpressengine.com/userForum/write
또한, 쿼리 스트링에 변수명을 직접 노출하지 않기 때문에 깔끔해보이고, 보안적인 측면에서도 좋을거라고 생각합니다.
작동 구조
Context -> Router (추가됨) -> ModuleHandler -> ModuleObject -> DisplayHandler
개발 계획
- router 클래스 추가
- Context::getUrl() 처리 방식 변경
- router 제어
- module trigger 혹은 애드온에서 router를 제어할 수 있도록 해야함
논의 사항
- 서드파티에서 어떻게 router 기능을 사용할 수 있을까?
- module.xml에 router 스펙을 추가하거나, 새로운 xml 파일을 추가해야 함
혹은 xml 스펙 추가 없이 php 구문으로 직접 추가하게 해야할듯
- module.xml에 router 스펙을 추가하거나, 새로운 xml 파일을 추가해야 함
- 중복되는 rewrite rule에 대한 처리?