CI 묻고 답하기

제목 링크 경로 문제 ,, 이번엔 제대로 원인 분석을 해봐야 될듯..
글쓴이 DJ구스 작성시각 2012/01/17 05:41:21
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 22245   RSS
링크 팝업으로 띄울려고 하는데..
다른페이지에서 잘 쓰던거 그대로 적용시켰는데

http://localhost/bo/user/lists 페이지 에서 

{=anchor_popup('bo/user/register', '회원 등록', popup_register)}
을 템플릿에 적용해서 하면 
http://localhost/bo/user/register
이렇게 열려야 하는데
현재 자꾸 이렇게 열리네요.. 제 뚜겅또 함게.. ㅋㅋ

http://localhost/bo/user/lists/bo/user/register


이런식으로 등록이 되네요.. 환경설정이랑 모두 정상적인데..
이미 다른페이지에서도 잘 적용이 되는데...
왜 유독 이페이지 에서만 site_url이 저렇게 처리가 되는건지.. 

1시간째 또 삽질중이네요...원인을 모르고 넘어갔었는데
어떻게 하다가 되었거든요.. 시간이 없어서 넘어갔지만
이번에는 정확한 원인을 찾아서 다음에 또 이런 문제가 없도록 해야겠네요..

혹시 이런 문제 경험 해보신 분 계신가요?
어디 설정에서의 문제 또는 중복으로 값이 들어 가는거 같은데..
 다음글 멀티파일업로드 중 퍼미션문제일까요..? (4)
 이전글 브라우저 캐슁에 관련하여 질문입니다.ㅜㅜ (3)

댓글

한대승(불의회상) / 2012/01/17 09:43:40 / 추천 0
^^ 해결책은 간단 합니다.

1. http:// 로 시작하는 절대경로를 사용한다.
2. / 로 시작하는 상대경로를 사용한다.
3. CI의 URL  헬퍼의 site_url() 함수를 사용한다.

이 문제의 원인은 웹브라우져가 상대주소를 어떻게 해석 하느냐를 이해 하면 됩니다.

현재 주소가 http://localhost/bo/user/lists 로 되어 있는 상태에서
상대 경로  bo/user/register 를 호출하게 되면 http:// 로 시작하는 절대경로가 아니므로
현재 경로를 기준으로 해석하게 됩니다.

기존 방식은 최종 URL에 확장자(.php 나  .html)가 붙게 되므로 파일로 인지 하여 무시 하게 되는데 CI와 같은 프레임워크 사용시 모두 URL처럼 보이므로 웹브라우져는 기존 URL에 요청한 상대URL을 붙이게 되니까 구스님과 같은 문제가 발생 합니다.

DJ구스 / 2012/01/17 10:30:42 / 추천 0
불의회상// 으하하 감사합니다..

하지만 2번과 3번을 해도 동일한 증상이구요.. 그리고 다른 페이지에서는 정상적으로 되던것인데...
이상하게 저 페이지에서만 그러네요....

그리고 'bo/user/register' 를 이렇게 넣었던 이유는..
anchor_popup 에서 url변수를 받아서 site_url로 처리를 하더라구요...

제가 볼때에는 환경 설정 아니면 어떤 변수의 값문제인거 같은디...
모든 링크는 '/'를 젤 앞에 썼구요..다만 anchor_popup 에서 메뉴얼상 url 주소를 상대경로를 사용하기에
저 역시 상대주소를 쓴건데 저게 문제가 되네요.. ㅜㅜ;

다른거 모두 제대로 사용하는데 이페이지 하나 때문에 모두 http://를 붙인다는것도 존심이 허락치 않고
뭔가 어디서 꼬여 인듯한데.. 음..
한대승(불의회상) / 2012/01/17 13:28:42 / 추천 0
DJ구스// ㅎㅎ 이런.. 구스님이 남구스님인걸 깜빡 했네요 ^^;;

2번과 3번에서 동일한 증상이 나타나고, 함수 내부에서 site_url로 처리 하고 있는데 문제가 생긴다면
config쪽을 봐야 하나요?

core 함 뜯어 봐야 겠네요.


DJ구스 / 2012/01/18 12:08:16 / 추천 0
 원인을 찾았습니다.

/* Location: ./application/config/pagination.php */
이 파일을 생성하고 이곳에서 환경설정 한 부분에서 오류가..
역시 오래전에 해둔거라 까먹고 있었네요.. 

아 삽질 반나절..아까워..
감사합니다. ^^

// paging base url;
$config['base_url'] = current_url();

// 페이지당 보여줄 리스트 개수
$config['per_page'] = 20;

// 페이지 번호를 URI 세그먼트의 어느부분에 포함
$config['uri_segment'] = 3;

/*
 * 선택된 페이지번호 좌우로 몇개의 숫자링크를 보여줄지 설정합니다.
 * 예를들어, 2 는 본 페이지의 맨위에있는 예제와 같이 양쪽에 2개의 숫자링크를 보여줍니다.
 * (즉 숫자는 5개가 되겠죠 )
*/
$config['num_links'] = 5;
$config['use_page_numbers'] = TRUE;
/*기본값으로, URI 세그먼트는 페이징하는 아이템들의 시작 인덱스를 사용합니다.(역주:무슨소리인지 잘 모르겠네요.사용해 보면 아는데 시간이 없어서 ... 죄송).실제 페이지 번호를 보여주고 싶다면, TRUE로 설정하세요.*/

/*
 * 기본값으로, 페이지네이션 라이브러리는 여러분이 URI세그먼트(Segments)를 사용한다고 가정합니다.
 * 그리고 링크를 생성합니다. http://example.com/index.php/test/page/20
 * $config['page_query_string'] = TRUE 을 TRUE 로 설정하면, 링크는 자동으로 쿼리스트링(Query Strings) 형식으로 바뀝니다.
 * 이 옵션은 명시적으로 설정할수도 있습니다. $config['page_query_string'] 이 TRUE 일때 페이지네이션 링크는 아래처럼 바뀝니다.
 * http://example.com/index.php?c=test&m=page&per_page=20
*/
$config['page_query_string'] = FALSE;
$config['query_string_segment'] = 'page'; // 기본 per_page

한대승(불의회상) / 2012/01/18 12:49:36 / 추천 0
고생 하셨습니다.
원인 분석 부터 문제 해결까지 모두 하셨다니 저도 기쁘네요. ^^