Codeigniter `не указан входной файл` и` ошибка 404 Page Not Found` при работе - PullRequest
1 голос
/ 22 октября 2011

У меня есть веб-сайт, который я построил на codeiginiter 2.0.1 (мой личный сайт). Я создал это приложение локально, используя WAMP, и оно работает на 100%, как и должно (Локально). Я загрузил это на свой действующий сервер, и я получаю ошибку «404 страница не найдена». Эта ошибка исходит от codeigniter через мой метод Home-> Error, а не с сервера, поэтому воспламенитель кода определенно работает.

Вот мой конфиг маршрутов. Если я изменю 404_override на «Домой». Он загружает мой домашний контроллер как надо, но когда я перехожу на ЛЮБУЮ страницу, я получаю страницу 404 не найденной.

$route['default_controller'] = 'Home';
$route['404_override'] = 'Home/Error';

Я подозреваю, что это может быть связано с моей конфигурацией .htaccess & Codeigniter.

// Codeigniter Config.php - Note: My Hosting is with Godaddy. [CGI/FastCGI]
$config['index_page'] = 'index.php?';
// Tried Auto and All others, REQUEST_URI works fastest for me.
$config['uri_protocol'] = 'REQUEST_URI';

Мой .htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L] 

Я попробовал так много ссылок через SO & Google, чтобы исправить это, те, которые я пытался повторить, приведены ниже.
- CodeIgniter 404 Страница не найдена, но почему?
- кодовый указатель 404 на существующем контроллере
- http://codeigniter.com/forums/viewthread/60469/#297477
- http://codeigniter.com/wiki/Godaddy_Installaton_Tips
- Среди многих других

Я уверен, что это связано с htaccess и mod_rewrite, есть идеи?


Обновление
Если я заменю $route['404_override'] = 'Home/Error' на любой из моих контроллеров, они будут отображаться и работать как положено, но по какой-то причине он всегда выдает страницу 404.

Если я перейду к: /index.php/home - я получу ошибку No input file specified.

Ответы [ 2 ]

9 голосов
/ 23 октября 2011

имя первого контроллера должно быть в нижнем регистре, как:
$route['default_controller'] = 'home';

тогда вы можете оставить пустую страницу index_page:
$config['index_page'] = '';

наконец, в .htaccess должен быть рядом с index.php в каталоге базового пути, вы можете изменить последнюю строку, как:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /home/index.php?$1 [L]

надеюсь, что это решит

3 голосов
/ 26 октября 2011

Нашел проблему ..
Убедитесь, что имена вашего контроллера строчные .
controllers/Home.php Неправильно, это выкидывало страницу 404 не найдена. controllers/home.php Правильно.

...