포럼

XE의 경우 코어에서 정한 Rewrite rule을 따르고 있습니다.

/document_srl/
/mid/document_srl/
/vid/document_srl/
/vid/mid/document_srl/

하지만 사이트를 만들다보면 이러한 룰은 한계가 있습니다.
주소도 길어지고 외우기 힘들고 지저분해보입니다.

모듈에서 Custom rewrite rule을 지원한다면 좀 더 간결한 주소를 만들 수 있겠죠.

RewriteEngine 클래스 레퍼런스
  • RewriteEngine::set();
  • RewriteEngine::unset();
  • RewrtieEngine::getRules();
  • RewriteEngine::setTargetModule();
  • RewriteEngine::addTargetModule();
  • RewriteEngine::getTargetModules();

<?php
class RewriteEngine {
    var $rules;

    /**
     * @brief constructor
     **/
    function RewriteEngine() {
    }

    function set($regex, $rewrite, $target_module) {
        if(!isset($this->rules[$regex])) {
            $rule = new stdClass;
            $rule->regx = $regex;
            $rule->rewrite = $rewrite;
            $rule->target_module = $target_module;
            $this->rules[$regex][] = $rule;
        }
    }

    function unset($regex, $index = null) {
        if($index) {
            unset($this->rules[$regex][$index]);
        } else {
            unset($this->rules[$regex]);
        }
    }

    function setTargetModule($regex, $target_module) {
        $this->rules[$regex]->target_module = $target_module;
    }

    function getRules() {
        return $this->rules;
    }

    function getTargetModules($regex) {
        return $this->rules[$regex]->target_module;
    }
}
?>

before_module_init 혹은 before_module_proc 시점에서 룰을 추가하거나 삭제할 수도 있고요.

<?php
if($called_position == 'before_module_init') {
    RewriteEngine::set('[a-zA-Z0-9_+]/category/[0-9+]', 'index.php?mid=$1&category_srl=$2', 'board');
}
?>

conf/module.xml 파일에 룰을 선언할 수 있습니다.

<module>
...
<rewriteRules>
    <rule regex="[a-zA-Z0-9_+]/category/[0-9+]" rewrite="index.php?mid=$1&category_srl=$2" module="board" />
    <rule regex="[a-zA-Z0-9_+]/act/write/" rewrite="index.php?mid=$1&act=dispBoardWrite" module="board" />
    <rule regex="[a-zA-Z0-9_+]/act/modify/[0-9+]" rewrite="index.php?mid=$1&document_srl=$2&act=dispBoardWrite" module="board" />
    <rule regex="[a-zA-Z0-9_+]/act/delete/[0-9+]" rewrite="index.php?mid=$1&document_srl=$2&act=dispBoardDelete" module="board" />
</rewriteRules>
...
</module>

module="board"인 경우 board 모듈에서만 동작하는 룰임.

잊어먹지 않기 위해 적어놓는 글이라 새로운 생각이 떠오르면 언제든지 바뀔 수 있습니다.
글쓴이 제목 최종 글
이온디 레이아웃 스킨 최소 지원 브라우저 버전은 몇 까지 작업하시나요? [2] 2020.03.14 by BNU
기진곰 광고차단 군비경쟁 [60] 2015.06.28 by 니는뜬데이~
다미아빠 Nginx 다중 사이트 운영하면.. [12] 2015.06.28 by 다미아빠
CONORY 끝난 공모전을 위로해줄 [소셜XE 2015] 모듈 소개.. [82] file 2023.11.17 by 이온디
gayeon 자료 공유 9 :: 슬라이드 배너 위젯 v2 [29] file 2015.06.29 by 초보해외유저
이온디 알림센터 애드온 이런 기능은 어떨까요 [7] 2015.06.29 by 1052
CosignStudio THEME FOREST 테마 어떨까요? [18] 2015.06.29 by CosignStudio
개발해보쟈 Xewall 개발을 다시 시작해 볼까 생각중입니다. [7] 2015.06.29 by CosignStudio
AJKJ IE7/8/9 이용자분에게 크롬 프레임 설치 유도, 어떻게 생각하시나요? [12] 2015.06.29 by 이니셔티브
또별 소셜로그인의 로그아웃 기능보완에 대하여. [4] 2015.06.30 by 또별
treasurej 레이아웃 스킨이나 게시판 스킨, 위젯스킨 등 부트스트랩 사용시 [6] 2015.07.29 by AJKJ
이온디 기능을 만들 줄 모르면 홈페이지 만들기가 어려운 것 같아요 [13] 2015.07.01 by 다미아빠
브삼 사이트 제작/편집이 백지로 나올때 [8] 2015.07.01 by Luatic™
socialskyo 플래닛 모듈 아직 실제 운영 하는 사이트에 쓰고 계시는 분들 많으신가요? [5] 2015.07.01 by socialskyo
꾸링 예전에 구입한 레이아웃.. 지원중단되었을 때.. [9] 2015.07.01 by 착한악마
가을풍경 대구 지역 XE 개발자모임을 만들면 좋겟습니다. [18] 2015.07.01 by 무공수련
이온디 서드파티 개발 지원 담당 부분도 강화되었으면.. [7] 2015.07.01 by 이온디
CONORY [마감] 펌추적 모듈을 한시적으로 배포합니다. [68] file 2015.07.03 by I-JEX
이온디 언제나 그렇듯 레이아웃 만드느라 한창입니다. ㅎㅎ [3] file 2015.07.03 by I-JEX
이온디 XEICON은 누가 담당하는 건가요 ㅎ [5] 2015.07.04 by 다미아빠