2014-01-26 3 views
2

У меня есть набор контроллера по умолчанию:CodeIgniter - По умолчанию контроллер не загружается автоматически

$route['default_controller'] = "Home"; 

Однако, когда я иду в http://mydomain.com/, он говорит, 404 страница не найдена, но при переходе к http://mydomain.com/Home, контроллер загружает нормально. В чем может быть проблема? Я часами цеплялся за голову. Мой htaccess - posted here при необходимости. Благодаря!

+0

Ваш .htaccess файл выглядит отлично. Попробуйте маленькие буквы, такие как ** $ route ['default_controller'] = "home"; ** и посмотрите, имеет ли значение разницу –

ответ

2

Оказывается, моя проблема была несколько не связаны. Мне пришлось переименовать мой php-файл контроллера по умолчанию в нижний регистр и имя класса контроллера в нижний регистр, и все приступило к работе. Когда CI ищет файл контроллера по умолчанию, он ищет в нижнем регистре для файла; если я назову свой файл контроллера «Home.php» вместо «home.php», CI пропустит его в Linux (поскольку файловые системы Linux чувствительны к регистру).

1

В вашей маршрутизации нет ничего плохого, проблема с файлом htaccess. Попробуйте удалить

ErrorDocument 404 /index.php 
+0

Спасибо, но он по-прежнему делает то же самое. Контроллер по умолчанию работает, если он указан явно, но при загрузке 'http: // mydomain.com /' он не загружается. – arao6

0

без какой-либо дополнительной информации & кода из ваших конфигов/контроллеров, я предлагаю проверить конфиг/config.php для них (оба должны быть пустыми в обычных случаях):

$config['base_url'] = ''; 
$config['index_page'] = ''; 

IIRC, я видел подобную проблему, и она была связана с этими конфигурационными переменными. Надеюсь, это поможет вам немного.

+0

Это уже была настройка. Спасибо хоть – arao6

1

У вас есть проблема с .htaccess. лоток таким образом:

.htaccess

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

config.php

$config['base_url'] = 'www.homepage.com'; 
$config['index_page'] = ''; 

routes.php

$route['default_controller'] = "yourcontrollername"; 
$route['404_override'] = ''; 
Смежные вопросы