CI 묻고 답하기

제목 라우팅 관련 질문 드립니다. 답글 부탁드립니당.
글쓴이 빈대낭인 작성시각 2014/03/27 11:30:46
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15014   RSS
$route['(:any)/(:any)'] = '$1/test/$2';
$route['(:any)/(:any)/(:any)'] = '$1/test/$2/$3';

이런식으로 했는데요. 중간에 테스트 라는 경로를 숨기기 위해서 이렇게 작업중입니다.

그런데 위와 같은 방식으로 했을경우

/board/view/ -> 이런 경우는 정상 작동하는 반면 
/board/view/1 -> 이런 경우는 작동하지 않습니다.

제가 잘못사용하고있는건지.. 해결책이 있는건지 답변좀 부탁드리겠습니다.

감사합니다.
 다음글 base_url경로 설정 질문 (1)
 이전글 익스플로러에서 부분적으로 로그인이 안됩니다. Tank_... (3)

댓글

변종원(웅파) / 2014/03/27 11:35:43 / 추천 0
 (:any)/(:any) <- 두번째 이후가 몇개인지 다 동일하게 처리됩니다. 
즉 첫번째 구문만 작동하겠죠.

작업전에 만들어질 수 있는 모든 주소에 대해 고려하고 작업을 해야합니다.

http://www.codeigniter-kr.org/user_guide_2.1.0/general/routing.html


참고하세요.

$route['ajax/imgs/([0-9]+)'] = 'board_ajax/imgs/$1';
 
$route['(:any)/sns/(:any)/(:any)'] = 'board/sns/$1/$2/$3';
 
// 고정구분값에 따른 인터페이스 연결(redirect시킴)
$route['[C](:num)+'] = '/board_interface/index/$1';
$route['[U](:num)+'] = '/sns_interface/index/$1';
 
// 첫번째 세그먼트가 소문자일경우 키워드 인터페이스로 연결
//$route['[K](:num)'] = '/keyword_interface/index/$1';
// 키워드 수정 : alvajini 2012. 3. 14. [결함 #674 #3015 키워드 단축 url 에러 관련] -,_추가
$route['([a-z0-9\-\_])+'] = '/keyword_interface/index/$1';
 
// 짧은 주소 관련 라우터
$route['_([a-zA-Z0-9]{7})'] = 'shorturl/index/$1';

빈대낭인 / 2014/03/27 11:46:02 / 추천 0
답변 감사합니다 웅파님

링크 달아주신 메뉴얼을 정독했습니다.

그런데 

//$route['(:any)/(:any)'] = '$1/test/$2';
$route['(:any)/(:any)/(:any)'] = '$1/test/$2/$3';

이렇게 적용했을경우
/board/view/1 이 링크가 정상 작동하는 반면

$route['(:any)/(:any)'] = '$1/test/$2';
//$route['(:any)/(:any)/(:any)'] = '$1/test/$2/$3';

이랬을 경우 에러 페이지로 가더라구요..ㅠ 왜 그런지 모르겠습니다.

변종원(웅파) / 2014/03/27 11:48:44 / 추천 0
첫번째 세그먼트가 없어서 그럴수도 있고 404 페이지가 나온다는건
어쨌든 주소에서 디렉토리, 컨트롤러, 메소드 중 하나가 안맞다는거죠.
뷰 파일이 틀려도 404 나오구요
빈대낭인 / 2014/03/27 11:50:43 / 추천 0
 넵, 다시 처음부터 차근차근 풀어보겠습니다. 답변 주셔서 정말 감사드립니다. ^^
빈대낭인 / 2014/03/27 12:05:25 / 추천 0
 에공.. 왜그런지 알았습니다.

지금 제가 짜고있는 구조가 HMVC 로 만들고 있는데용, 컨트롤러에서 -> 타겟의 컨트롤러 로 값을 던져주는 구조인데요,

$1 이 폴더명 + 폴더명과 같은 클래스명 인데 HMVC에서는 기본적으로 폴더명만 써주면 폴더명과 같은 파일의 클래스를 자동으로 실행하드라구요..

그래서 경로명을 생략하다보니 뒤에 1 값이 변수가 아니라 메쏘드를 찾고있어서 그랬던거 같습니다.

원인은 찾았는데 이걸 또 어떻게 해결해야 할지... ㅎㅎ 밥먹고나서 밥심으로 다시 풀어봐야겠습니다.