CI 묻고 답하기

제목 redirect 질문입니다.
카테고리 CI 2, 3
글쓴이 꽈찌쭈 작성시각 2016/09/23 14:09:35
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 24397   RSS

안녕하세요

hooks로 페이지별 로그인 처리를 하는 중에

redirect로 페이지 전환을 했을때 

http://도메인/main/info 에서 로그인 페이지로 가도록 

redirect('/main/login','refresh');

를 사용하면

http://도메인/?/main/login

페이지는 정상적으로 나오나 주소에 /? 가 붙어버립니다.

왜 이런걸까요?

 다음글 CI 이메일이 어느곳은 되고 어느곳은 안보내집니다. (5)
 이전글 PHPEXCEL관련 질문입니다. (2)

댓글

변종원(웅파) / 2016/09/23 15:46:30 / 추천 0
config.php의 base_url은 어떻게 되어 있으실까요?
꽈찌쭈 / 2016/09/23 16:10:50 / 추천 0

@웅파

http://codeigniter-kr.org/bbs/view/lecture?idx=7070&page=2&view_category=&lists_style=

이글을 참고하여 

//$config['base_url'] = '';
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

이렇게 되어있습니다.

변종원(웅파) / 2016/09/23 17:06:43 / 추천 0
config.php 의 $config['uri_protocol'] 값을 바꿔가면서 테스트 해보세요.
꽈찌쭈 / 2016/09/23 17:28:19 / 추천 0

@웅파

$config['uri_protocol']	= 'REQUEST_URI';

로 설정되어 있습니다. 값을 바꿔가면서 테스트 해보니 

AUTO : 동일한 동작

PATH_INFO : 기존 페이지들은 접근을 하나 redirect시 /? 가 붙으며 404페이지로 이동

QUERY_STRING : 404페이지

ORIG_PATH_INFO : 404페이지

위와 같은 결과가 나옵니다.

 

일단은 제가 만든 리다이렉트로 해결했으나 주소가 왜 저렇게 나오는지 궁금하네요

꽈찌쭈 / 2016/09/26 18:07:04 / 추천 0

@웅파

//자문자답

URI 관련 코어단 분석해보니 

$config['enable_query_strings'] = TRUE;

로 되어있으면 쿼리 스트링형식으로 나오면서 GET값만 처리해야되는 부분을

리턴되는 URL값들은 전부 ?를 붙여서 처리하더군요

일종의 버그(?)라고 볼 수 있을까싶네요

 

변종원(웅파) / 2016/09/27 10:13:36 / 추천 0

꽈찌쭈/ 버그 라기 보다는 설정이죠. 사용하지 않는데 설정을 해놓은 것이니까요.

난 사용하겠다라고 선언해준거니 프로그램은 그대로 따르는 것뿐이죠. ^^

꽈찌쭈 / 2016/09/27 17:52:59 / 추천 0

@웅파

버그라고 생각했던 이유가 

$config['enable_query_strings'] = TRUE;

을 통해서 URL이

http://test.com/board/list?page=1&keyword=test

http://test.com/board/view?no=1&page=3&keyword=test

이런형태로 자연스럽게 갈 줄 알았습니다.

막상 옵션을 적용하면

http://test.com/?/board/list?page=1&keyword=test

이렇게 나와버리니...코어 소스의 잘못된 처리라고 생각했습니다.

변종원(웅파) / 2016/09/27 17:59:07 / 추천 0

꽈찌쭈/ config.php에 설명 나와 있습니다. 그럴 것이다는 개발자의 생각이고 만들어진 의도는

example.com/who/what/where/

example.com?who=me&what=something&where=here

의 차이입니다. ^^;