CI 묻고 답하기

제목 CI URL 포맷과 관련하여 문의 드립니다.(물음표가 있어야지만 정상 작동하는 케이스)
글쓴이 풀리야 작성시각 2014/05/15 17:13:27
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 18913   RSS
CI는 이번에 처음 사용해봅니다.

생활코딩(http://opentutorials.org/course/697/3829)의
git 소스(https://github.com/egoing/codeigniter_codeingeverbody/tree/Controller)를 가지고 테스트 중인데요.

이상하게 URL에 '물음표' 가 빠지면 요청을 받지 못하고 404를 던지네요.

참고로 앞단의 웹서버는 nGinx를 사용하고 있으며

1. 404리턴 케이스 : http://www.domain.com/index.php/topic
2. 정상 리턴 케이스 :  http://www.domain.com/index.php?/topic

물음표를 없앨 수 있는 방법이 없을까요?(rewrite룰 적용 말고)
바쁘시겠지만 고수분들의 코멘트 부탁드리겠습니다.
 다음글 페이지네이션..질문.. (8)
 이전글 get 방식을 썼을때 url직접 입력을 막는법 (2)

댓글

변종원(웅파) / 2014/05/15 17:31:30 / 추천 0
config.php에서 $config['uri_protocol']의 값을 주석에 있는 값들로 변경하면서 테스트해보시고 안되시면
ci 문제가 아닙니다.

서버단(nginx)에서 문제라 그쪽으로 알아보셔야 할 것 같네요.

제가 경험했던 케이스가 있는데 특정 isp(인터넷라인)에서 자동으로 ?를 붙여주는 경우가 있었습니다.
풀리야 / 2014/05/15 17:37:13 / 추천 0
답변 감사드립니다.

?가 자동으로 생기는건 아니고.. 제가 직접 ?를 추가하니까 요청을 정상으로 받아서 처리하더라고요.
양승현 / 2014/05/15 19:03:20 / 추천 0

/system/core/uri.php

- line 178 : _detect_uri() 함수부분을 한번 살펴 보셔요.
저 같은경우

203줄 근처 : $uri = $parts[0]; // 주석
223줄 근처 : $uri = parse_url($uri, PHP_URL_PATH); //주석
225줄 근처 : return str_replace(array('//', '../'), '/', trim($uri, '/')); => return str_replace(array('//', '../'), '/', $uri); //수정

등으로 수정을 하여 사용중입니다.  저의 경우 hmvc를 적용하다 문제가 생겨서 위처럼 패치를 했답니다.
아마 비슷한 오류인듯 하네요. 아닐수도 있고요. 저도 적용하면서 ? 관련하여 문제가 있었거든요.

 

변종원(웅파) / 2014/05/15 19:22:02 / 추천 0
풀리야/ 그러니까요.. ^^ 
원래는 ? 이게 없어야 하는데 어디선가 ?가 들어가야 정상으로 인식을 하는거죠.

제 경우엔 특정 isp업체라인을 통해 접속하면 ?가 생겨서 그랬다는 겁니다. 동일한 사이트를 다른 곳에서 접속하면 ?가 안생기구요.

지금 현상이 ?를 안붙이면 에러가 나는거잖아요. 누군가가(웹서버, 라인, ci 등등)에서 붙여주고 있다는거거든요.
한대승(불의회상) / 2014/05/16 08:56:13 / 추천 0
ㅎㅎㅎ 그럼 질문이 "?를 없애는 방법" 이 아니라 "?를 자동으로 붙여주는 방법" 으로 바껴야 하는거군요 ^^
발상의 전환!!!