안녕하세요
hooks로 페이지별 로그인 처리를 하는 중에
redirect로 페이지 전환을 했을때
http://도메인/main/info 에서 로그인 페이지로 가도록
redirect('/main/login','refresh');
를 사용하면
http://도메인/?/main/login
페이지는 정상적으로 나오나 주소에 /? 가 붙어버립니다.
왜 이런걸까요?
@웅파
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']);
이렇게 되어있습니다.
@웅파
$config['uri_protocol'] = 'REQUEST_URI';
로 설정되어 있습니다. 값을 바꿔가면서 테스트 해보니
AUTO : 동일한 동작
PATH_INFO : 기존 페이지들은 접근을 하나 redirect시 /? 가 붙으며 404페이지로 이동
QUERY_STRING : 404페이지
ORIG_PATH_INFO : 404페이지
위와 같은 결과가 나옵니다.
일단은 제가 만든 리다이렉트로 해결했으나 주소가 왜 저렇게 나오는지 궁금하네요
@웅파
//자문자답
URI 관련 코어단 분석해보니
$config['enable_query_strings'] = TRUE;
로 되어있으면 쿼리 스트링형식으로 나오면서 GET값만 처리해야되는 부분을
리턴되는 URL값들은 전부 ?를 붙여서 처리하더군요
일종의 버그(?)라고 볼 수 있을까싶네요
꽈찌쭈/ 버그 라기 보다는 설정이죠. 사용하지 않는데 설정을 해놓은 것이니까요.
난 사용하겠다라고 선언해준거니 프로그램은 그대로 따르는 것뿐이죠. ^^
@웅파
버그라고 생각했던 이유가
$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
이렇게 나와버리니...코어 소스의 잘못된 처리라고 생각했습니다.
꽈찌쭈/ config.php에 설명 나와 있습니다. 그럴 것이다는 개발자의 생각이고 만들어진 의도는
example.com/who/what/where/
와
example.com?who=me&what=something&where=here
의 차이입니다. ^^;