2017-12-06 11 views
-2

codeigniter에서 라우팅하는 데 문제가 있습니다. 내 라우팅 파일은 다음과 같습니다 :Codeigniter 3.1.16 라우팅 문제

$route['admin/newgallery'] = 'gallery/do_upload'; 
$route['admin/listgallery'] = 'gallery/list'; 
$route['admin/create'] = 'posts/create'; 
$route['admin/listposts'] = 'posts/list'; 
$route['admin'] = 'admin/index'; 
$route['posts/(:any)'] = 'posts/view/$1'; 
$route['posts'] = 'posts/index'; 
$route['default_controller'] = 'pages/index'; 
$route['(:any)'] = 'pages/index/$1'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 

모든 경로는 처음 두를 제외하고 잘 작동 : 나는 mypage/admin/listgallery를 입력하면

$route['admin/newgallery'] = 'gallery/do_upload'; 
$route['admin/listgallery'] = 'gallery/list'; 

는 제대로 gallery/list를 호출합니다. 문제는 원래 컨트롤러/메소드 (이 경우 갤러리/목록)를 사용하여 주소를 입력하면 목록 페이지로 이동하면서 404 오류가 발생해야합니다. 내가 설정 한 다른 모든 라우팅 규칙은 처음 두 개를 제외한 나머지 작업을 수행합니다.

+1

"orignal 컨트롤러/방법"이 무엇인지 설명하십시오. – Tpojka

+0

https : // mysyte/gallery/list가 오류 페이지로 이동했을 때 https : // mysyte/admin/listgallery 및 https : // mysyte/gallery/list가 목록 페이지로 이동한다는 것을 의미합니다! –

+0

귀하의 가정이 잘못되었습니다 - 직접 호출하는 컨트롤러/메소드가있는 경우 물론 작동합니다. 라우팅과 관련이 없습니다. 라우팅이 마술처럼 정상적인 작업을 무시한다고 생각하는 것처럼 보입니다. 관찰 한 것처럼 라우팅은 정상적으로 작동하지 않습니다. 그래서 당신이 달성하려고 시도하고 있다고 생각하는 것은 무엇입니까? – TimBrownlaw

답변

0

Out of the Box, Codeigniter를 사용하면 URL에서 Controller/Method에 직접 액세스 할 수 있습니다. 당신은 10 개 이상의 URL이 모든 것을 당신의 욕망 인 경우 매개 변수 전달과 동일한 컨트롤러/메소드 가리키는 가질 수 있도록

는 또한

그래서 경우에 만 원하는 ... 사용자 정의 경로의 생성을 제공합니다 Route config에서 정의 된 모든 Controller/Method에 대한 액세스.

url이 routes config 배열에 정의되어 있는지 테스트해야합니다.

주요 코드

은 ...

$this->load->helper('url'); 
if(!isset($this->router->routes[uri_string()])){ 
    show_404(); // Or whatever you want ... 
} 

뭔가 같은 것입니다 그리고 당신은 당신이 보호하고자하는 컨트롤러의 생성자에 넣고있다.

물론 공통 컨트롤러를 만들어 이러한 방식으로 보호하려는 컨트롤러를 확장 할 수 있습니다.

(권장하지 않음) 정말로 "해킹"을 원한다면 system/core/controller 생성자에 넣고 시스템 전체를 만들 수 있습니다. 그래서 모든 것이 경로에서 정의되어야합니다. 참고 : 이렇게하면 'default_controller'가 손상됩니다.