CI 묻고 답하기

제목 CI에서 URl 경로질문
글쓴이 케케케 작성시각 2013/02/11 20:04:23
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 16167   RSS
localhost/auth/login 에서
뭐 로그인을 했다고 치면위에 경로가
바뀔꺼 아니에요 넘어간 페이지로....

근데 페이지가 submit될때마다
localhost/?auth/login 이런식으로 자꾸 ?가 붙어서 작업이 진행이 안되는데 어떤것 때문일까요?
 다음글 session 관련 질문 드립니다 (3)
 이전글 제 사이트공격한 해킹툴 정보입니다. (2)

댓글

변종원(웅파) / 2013/02/12 08:10:23 / 추천 0
http://cikorea.net/qna/view/2259/page/1/q/웅파/sfl/user_name

우선 config.php의 $config['uri_protocol'] 값을 바꾸면서 테스트 해보시고 동일하다면 

index.php의 첫 라인에 다음과 같이 처리하세요.

if($_SERVER['QUERY_STRING'] == 'index' or $_SERVER['QUERY_STRING'] == '/'){
?>
<script>location="<?=$base_url?>index.php";</script>
<?
}

/**
[QUERY_STRING] => index
[REQUEST_URI] => /?index
[SCRIPT_NAME] => /index.php
*/
케케케 / 2013/02/12 11:05:31 / 추천 0
웅파님 말씀대로 해봤는데 흐엉 자꾸 ?가 붙으면서 index 페이지로 가버리네요...ㅠㅠ
변종원(웅파) / 2013/02/12 11:07:27 / 추천 0
제 경우는 request_uri가 저렇게 나오니까 위와 같이 처리한거구요

index.php에서 $_SERVER변수 찍어보고 그 상황에 맞게 처리하세요
Artz / 2013/02/14 15:17:23 / 추천 0
query string을 사용할때,
url helper의 redirect 함수를 사용할 경우 발생하는 문제입니다.

url helper의 소스(/system/helpers/url_helper.php)를 살펴보면,
redirect()에서 site_url()을 호출하고,
site_url()에서 config class의 site_url()을 호출하는 것을 알 수 있습니다.

config의 site_url 함수는 다음과 같습니다.
function site_url($uri = '')
{
    if ($uri == '')
    {
        return $this->slash_item('base_url').$this->item('index_page');
    }

    if ($this->item('enable_query_strings') == FALSE)
    {
        $suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');
        return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix;
    }
    else
    {
        return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri);
    }
}

위 함수에서 query string 사용 시의 처리 부분을 살펴보면,
Query String을 처리하기 위해 자동으로 '?'를 붙여버리는걸 알 수 있습니다.

이 부분을 수정하시거나,
직접 구현한 redirection 함수를 사용하시면 될 것 같습니다.