CI 묻고 답하기

제목 [질문] url에서 마지막에 나오는 / 를 제거하는 방법
글쓴이 우노 작성시각 2009/07/12 02:11:19
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 29812   RSS
아래의 _remap() 을 이용하거나 혹은 CI에서 일반적인 경우에,
www.example.com/wiki/aaa/ 이렇게 주소를 치는 경우에 자동적으로 www.example.com/wiki/aaa 로 고쳐주게 하려면 어떻게 해야 할까요?
trac의 wiki 에는 위와 같이 자동으로 / 를 없애주고 있거든요.

일반적인 경우에는 상관이 없는데, wiki 를 구현하는데 있어서는 눈에 거슬리네요. ^^
 다음글 검색 파라미터 질문입니다. (5)
 이전글 [질문] wiki의 url을 해석하기 위한 _remap... (2)

댓글

변종원(웅파) / 2009/07/12 07:57:28 / 추천 0
후킹을 이용하여 시스템이 로드된 직후에 주소 제일 우측의 /를 제거하고 주소를 리다이렉팅시키면 될것같습니다
우노 / 2009/07/12 09:36:46 / 추천 0
괜찮으시다면, 예를 들어 주실 수 있으시겠는지요? ^^;;

아직, 후킹부문을 적용해 본적이 없는데다가,
주소 제일 우측의 /를 제거하는 것을 어떻게 할지 아직 아이디어가 없습니다. 정규표현식으로 해야 할지.. 아님 쉽게 처리할 함수가 있을지 ...

앞서 wiki에서 url 을 해석하는 것도 뭘로 할까 하다가... 고전적인 for 문을 이용해서 처리했거든요.
부탁 좀 드리겠습니다. 꾸벅
변종원(웅파) / 2009/07/12 21:20:02 / 추천 0
주소 우측 / 제거는 간단합니다.

$seg=$this->uri->uri_string();
$len = strlen($seg);
if(substr($seg, -1) == '/') {
$seg = substr($seg, 0, $len-1);
}

후킹은 매뉴얼 (http://www.codeigniter-kr.org/user_guide/general/hooks.html) 참고하시구요.
후크 포인트를 pre_system 로 하시면 될 것 같습니다. 매뉴얼대로 후킹함수를 만들고 위 내용을 넣고 주소의 맨 마지막 / 를 제거후
그 제거된 주소로 자바스크립트 location="/제거된 주소'; 로 리다이렉팅 하면 되는데 단점은 초기에 로딩이 2번 되는거죠.

아니면 아파치의 rewrite모듈을 이용할 수도 있을 것 같네요.
RewriteRule ^(.+[^/])$ $1 [R]
테스트해보지는 않았습니다. ^^;



원칙대로라면 주소의 맨 마지막에 /를 추가해주는 것이 맞는데 (/ 없으면 파일일지 디렉토리일지....) ^^;