default_controller 를 index 로 지정할 경우.

Codeigniter의 routes.php 에서 $route['default_controller'] = "index";로 설정했을때 
아래와 같은 상황이 발생할 수 있다. 

 1. Index 컨트롤러의 index 함수가 2번 호출된다. 
 2. 부모컨트롤러를 사용할 수 없다. 

 Codeigniter에서 index는 기본 호출 메소드로 지정되어 있다. 
그래서 URL에 2번째 호출값이 없다면 항상 index를 호출하게 된다.
class Index extends CI_Controller {
	public function index() {
		echo "index 호출됨";
	}
	public function lists(){
		echo "list 호출됨";
	}
}
  1. 함수가 2번 호출됨. 
    위와 같이 Index 라는 컨트롤을 생성 하고 http://localhost/ 라고 호출을 하면 "index 호출됨index 호출됨" 이라고 2번출력 된다.
    lists 함수를 호출하기 위해서는 http://localhost/index/lists 라고 해야 하는데, 이것은 index.php를 숨기고자 하는 의도에 반한다. 또한 "list 호출됨list호출됨" 과 같이 두번 호출하게 된다
  2. 부모 컨트롤러를 사용할 수 없다.
    만약 index 함수에 "$this->load->view" 와 같이 상위 컨트롤러의 Message: Undefined property: Index::$load 와 같이 유사 오류 메시지가 호출된다. 해결 방법 Index 컨트롤러에 생성자를 추가하고 부모컨트롤러의 생성자를 호출 한다.
class Index extends CI_Controller {
	public function __construct(){
		parent::__construct();
	}
	public function index() {
		echo "index 호출됨";
	}
	public function lists(){
		echo "list 호출됨";
	}
}
※ 만약 복잡한 시스템에서 하위 디렉토리를 생성해서 사용 할 경우에도 동일하게 적용 된다.
 "controllers/board" 와 같이 디렉토리를 생성 했을때 http://localhost/board 라고 접속할 경우 board/index.php 를 생성 해야 한다. 
$route['default_controller']를 main으로 설정 했을경우는 board/main.php 를 생성 해야 한다.

@https://ellislab.com/forums/viewthread/99200/#501033 
@https://ellislab.com/codeigniter/user-guide/general/controllers.html 
@http://www.codeigniter-kr.org/user_guide_2.1.0/general/controllers.html