2015-02-03 2 views
0

CI 3.0에 문제가 있습니다 routes.php 파일에 기본 컨트롤러를 남겨두면 모든 것이 완벽하게 작동합니다. 하지만 변경하면 "기본"CI가 404 오류를 던지기 시작합니다. 첫 번째 단계의 주 컨트롤러는 환영 메시지와 동일합니다. 방금 파일을 복사했습니다. 이름이 바뀌었고, 클래스 이름이 변경되었습니다 (당연히),로드보기가 index()입니다. 제안 사항이 있으십니까?CI 새 기본 컨트롤러가 작동하지 않음

는 내가 WAMP 로컬 호스트 모두에 노력을 을 말할 것을 잊었다 ..하지만 서버에서하지 .. :/

그리고 한 가지 더 ... 즉 내가 mydomain.com/welcome로 이동하려고하면 - 작동 중이면 mydomain.com/main으로 이동하십시오. 내가

내 main.php 파일을 환영하기 위해 다시 경로 기본 컨트롤러를 변경하는 경우에도 :

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Main extends CI_Controller { 
    function index(){ 
     $this->load->view('welcome_message'); 
    } 
} 

내 routes.php 파일 :

<?php 

defined('BASEPATH') OR exit('No direct script access allowed'); 

$route['default_controller'] = 'main'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 
+1

나는 주요 CI_controller'or에게 파일 이름 기본을 확장'에 당신이 클래스 이름을 변경하는 것을 잊었다 생각 질문과 함께 주 컨트롤러를 씁니다. –

+0

컨트롤러 및 라우트 파일에 대한 코드를 제공 할 수 있습니까? – Tim

+0

슬프게도하지만 클래스 이름을 변경하는 것을 잊지 않았습니다. :/ 내 로컬 호스트에서 모든 것이 작동하기 때문에 나에게 이상하다고 말하는 것처럼 말입니다 :/ 하지만 모든 파일을 서버에 복사했습니다 ... 그것은 작동하지 않습니다 .. 내가 routes.php에 기본 컨트롤러로 환영을하지 않는 한 – Scorpioniz

답변

5

의견에서 설명한대로 : 컨트롤러의 파일 이름은 대문자로 시작해야합니다. 귀하의 경우, Main.php. http://codeigniter.com/userguide3/changelog.html

«변경된 파일 이름 지정 규칙 (클래스 파일 이름은 이제 Ucfirst이어야하고 그 외 모든 것은 소문자 여야 함). »

0

시도가 function index()공공을 변경하려면 . 그럴 수 없다면 URL : domain.com/ index.php/ 메인 을 추가하고 어떻게되는지보십시오. 때때로 다른 서버에서 .htaccess를 사용하여 index.php을 제거해야합니다.

0

이 문제가 발생했습니다. 나는 경로를 바꾸는 대신 그것을 고쳤다. 여기 CI를 사용하려면 "site"폴더가 기본값입니다. 모든 코드를 "site"폴더에 저장해야합니다. 설치를 위해 사이트 폴더를 사용하지 않았다면 다중 컨트롤러 설정으로 작동하지 않을 것입니다. 따라서 기본 컨트롤러를 실행 가능하게 만들고 나머지는 남겨 둡니다. 404.

루트 디렉토리의 .htacess 파일을 변경하십시오.

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteBase/

     # Removes index.php from ExpressionEngine URLs 
     RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
     RewriteCond %{REQUEST_URI} !/system/.* [NC] 
     RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] 

     # Directs all EE web requests through the site index file 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     # RewriteRule ^(.*)$ /site/index.php/$1 [L] 
     RewriteRule ^(.*)$ /codeig/index.php/$1 [L] 
</IfModule> 

u는 "codeig"루트 폴더에 대한
RewriteRule ^(.*)$ /codeig/index.php/$1 [L] 변경된 라인이 볼 수 있습니다 위.

0

Codeigniter 3에서 그들은 파일의 이름을 대문자로 시작하도록 추가 코드를 추가하고 있습니다. 여기에 대한 해결책이 있습니다. 시스템/코어에서

/선 (약 303)의 경우

을 (변경 Router.php! file_exists (APPPATH.'controllers /'.$ this-> directory.ucfirst ($ 클래스). '. PHP ')) 에 경우 (! file_exists (APPPATH.'controllers /'.$ 클래스입니다.'. PHP '))

나뿐만 아니라 CodeIgniter.php 및 Loader.php에서 물건을 제거했다.

0

당신은 CI 3.x에 대한

$route['default_controller'] = $this->set_directory('front/home/').'home/index'; 

처럼 application/config/routes.php에서 기본 컨트롤러를 설정해야

관련 문제