포럼

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 모듈에서만 동작하는 룰임.

잊어먹지 않기 위해 적어놓는 글이라 새로운 생각이 떠오르면 언제든지 바뀔 수 있습니다.
글쓴이 제목 최종 글
bncPlan 다운로드와 XE market ...  
유샤인 제로보드 프로그램이 호스팅서버의 자원을 너무 많이 쓰고 있다며 웹사이트를 정지했는데... [7] 2011.08.17 by 종스
SMaker RewriteEngine class 제안 [7] 2020.03.14 by SMaker
snows96 최소한의 개인정보만 수집한다면 이런점은 어떻게 될까요? [15] 2020.03.14 by 모조키
난다날아 한국우편번호 서버 코드가 커밋되었습니다. [12] file 2020.03.14 by Xiso
파랑이지 XE 회원분들 중에 SNS, 메신저 사용하시는 분 있나요? [3] 2011.08.16 by 파랑이지
난다날아 해외 호스팅 사용자 XX 분 전 문제 [5] 2011.08.15 by hika1
파랑이지 XE도 이제 최소한 개인정보만 받게 되는 건가요? [1] 2011.08.15 by 인간a
SMaker 음. XE개발팀에는 어떻게 참여(지원)하지요? [2] 2011.08.15 by 인간a
부푸러 [해결] XE 개발자님들.. 보안에 신경써주세요 [2] 2011.08.14 by 부푸러
StanHolic Social XE 로그인할때 여러분도 오류나요 지금??  
마음의빈자리 아이피가 자동으로 바뀌는 환경에서 로그인 풀림문제 [4] 2011.08.13 by InandOUT
도라란 묻고 답하기 게시판도 교통정리가 필요할것 같습니다. [4] 2011.08.12 by 비나무
Treasurej xe자체에 minify... [2] 2011.08.12 by Treasurej
진실과 거짓말 현재접속자 표시도 XE에서 가능한가요? [1] 2011.08.12 by 한마음^^
고수군 쪽지보관기간 및 포인트 획득 logs  
Treasurej 문법 사용시 캐싱 방식? [4] 2011.08.12 by Treasurej
중국통 1.5.8빨리 업데이트 하세요... [3] 2011.08.11 by guny
coolsushi XE 버그 신고합니다.  
아아이디 위젯이나 애드온 제작 매뉴얼 있을까요? [2] 2011.08.10 by ForHanbi