2015-02-03 4 views
0

У проблемы с CI 3.0 , если я оставляю контроллер по умолчанию в файле route.php «добро пожаловать», все работает отлично. НО, если я его изменю, то есть «основной» CI начинает бросать ошибку 404 Главный контроллер для первых шагов такой же, как и приветствуется. Я просто скопировал файлы. переименовано, изменилось название класса (конечно) и в index() загрузочный просмотр. любые предложения?CI новый контроллер по умолчанию не работает

также я забыл сказать на WAMP LOCALHOST все работает .. но сервер не ..:/

И еще одна вещь ... то есть, если я стараюсь идти в 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

Я думаю, что вы забыли изменить имя класса 'Main расширяет CI_controller'or имя файла Main .php. запишите свой главный контроллер с вопросом. –

+0

Можете ли вы предоставить код для вашего контроллера и файл маршрутов? – Tim

+0

К сожалению, но я не забыл изменить название класса ..:/ , поскольку я говорил, что это странно для меня, потому что в моем локальном хосте все работает ..:/ , но затем я скопировал все файлы на сервер ... и он не работает. Если я не стану приветствовать в качестве контроллера по умолчанию в routes.php – Scorpioniz

ответ

5

Как указано в комментариях: Имя вашего контроллера должно начинаться с прописного. В вашем случае Main.php. См. http://codeigniter.com/userguide3/changelog.html

«Изменено соглашение об именах файлов (имена файлов классов теперь должны быть Ucfirst и все остальное в нижнем регистре). »

0

Попробуйте изменить function index() к Public , Если это не работает, попробуйте добавить URL-адрес: domain.com/ index.php/ main и посмотреть, что произойдет. Несколько раз вам нужен .htaccess на другом сервере, чтобы удалить index.php.

0

Я застрял в этой проблеме. Я исправил его, просто заменив путь. здесь папка «сайт» является по умолчанию, если вы хотите использовать CI, вам необходимо сохранить весь код в папку «сайт». если вы не использовали папку сайта для установки, она не будет работать с несколькими настройками контроллера. , следовательно, вы получаете контроллер по умолчанию как работоспособный, а остальные остальные появились 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> 

выше и можно видеть, что есть
RewriteRule ^(.*)$ /codeig/index.php/$1 [L] измененная строка для корневой папки "codeig".

0

В Codeigniter 3 они добавляют дополнительный код, чтобы заставить имена файлов начинаться с буквы верхнего регистра. Вот исправление для этого.

В системе/ядра/router.php изменить линию (около 303)

если (! File_exists (APPPATH.'controllers /'.$ this-> directory.ucfirst ($ класс).. PHP ')) к если (! file_exists (APPPATH.'controllers /'.$ класс.'. PHP '))

мне пришлось удалить материал в CodeIgniter.php и Loader.php, а также.

0

Вам просто нужно установить контроллер по умолчанию в application/config/routes.php как

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

для Ci 3.x