제목 | (수정) CI2.X 라우팅룰이 CI 3.0에서 동작 하지 않을때 | ||
---|---|---|---|
글쓴이 | 한대승(불의회상) | 작성시각 | 2015/04/02 08:58:14 |
|
|||
핵심 소스코드를 살펴 보면 :any 와 :num 치환하는 부분이 아래 처럼 바꼈습니다. // CI 2.2 $key = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $key)); // CI 3.0 $key = str_replace(array(':any', ':num'), array('[^/]+', '[0-9]+'), $key); 이것이 버그인지 의도 한 것인지 모르겠지만 라우팅에 문제가 생겼습니다. 예를 들면 config/route.php $route['edit/(:any)'] = 'rtest/index'; $route['edit'] = 'rtest/index';2.2 에서는 위 코드를 config/route.php에 추가 하고 www_example_com/edit www_example_com/edit/1 www_example_com/edit/1/2 www_example_com/edit/1/2/3위와 같이 하면 rtest/index 로 라우팅이 됩니다. 하지만 3.0 에서는 위 코드 추가시 www_example_com/edit www_example_com/edit/1 // 여기서 부터 에러가 남 www_example_com/edit/1/2 www_example_com/edit/1/2/3첫번째 인자만 유효하게 처리하고 나머지 인자는 404페이지 에러로 처리 합니다. 2.2가 버그인지 3.0이 버그인지 잘 모르겠네요. 3.0에서 2.2 처럼 라우트를 사용하고 싶다면 (:any) 대신 (.+) 로 바꿔 주시면 됩니다. // $route['edit/(:any)'] = 'rtest/index'; $route['edit/(.+)'] = 'rtest/index'; $route['edit'] = 'rtest/index'; |
|||
다음글 | ci 개발 앱? Bonfire (1) | ||
이전글 | 크롬 개발팁 하나 (캐시 비우기 및 강제 새로고침) (9) | ||
Siam
/
2015/04/02 09:04:22 /
추천
0
일단 좀 지켜봐야겠네요!
|
유마
/
2015/04/02 11:57:24 /
추천
0
포럼에 가서 물어보면 왜 바뀌었는지 대답은 해줄텐데...... 울렁울렁 거리더라고요... -_-a
|
변종원(웅파)
/
2015/04/02 12:28:21 /
추천
0
유마/ 2 -> 3 문서에 보면 비정상(?) 사용이라 바꿨다고 합니다. ㅎㅎㅎ
|
Siam
/
2015/04/02 17:45:24 /
추천
0
@변종원 갑자기 궁금한게 생겼는데, 2에서 사용하던 인자전달방식(주소 뒤에 덧붙여서 사용)이 잘못된거면
3버전에서는 여러 인자전달할때는 어떤식으로 사용해야 되는걸까요?;; |
변종원(웅파)
/
2015/04/02 23:53:17 /
추천
0
Siam/ 인자전달방식이 잘못된게 아니라 라우팅 파일에서 규칙 이야기 입니다.
|