Подтвердить что ты не робот

CodeIgniter 404 Страница не найдена, но почему?

Я использую CodeIgniter для двух приложений (общедоступное и административное приложение). Важными элементами структуры документа являются:

/admin
/admin/.htaccess
/admin/index.html
/application
/application/admin
/application/public
/system
.htaccess
index.php

Файл/admin/.htaccess выглядит следующим образом:

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

Параметр/admin/index.php имеет следующие изменения:

$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)

И файл /application/admin/config/routes.php содержит следующее:

$route['default_controller'] = "welcome";
$route['admin'] = 'welcome';

Приветствие - это мой контроллер по умолчанию.

Когда я вызываю домен /admin, я получаю ошибку 404 Page Not Found. Когда я вызываю домен /admin/welcome, все работает нормально. В журналах отладки появляется следующее сообщение об ошибке:

DEBUG - 2010-09-20 16:27:34 --> Config Class Initialized
DEBUG - 2010-09-20 16:27:34 --> Hooks Class Initialized
DEBUG - 2010-09-20 16:27:34 --> URI Class Initialized
ERROR - 2010-09-20 16:27:34 --> 404 Page Not Found --> admin

Как ни странно, эта настройка отлично работает на моей локальной установке MAMP (с localdomain/admin/), но когда я публикую и тестирую ее на "живом" сервере, я просто получаю 404 ошибки.

Любые идеи? Что я делаю не так? благодаря С.

4b9b3361

Ответ 1

Причиной проблемы было то, что на сервере был запущен PHP с использованием FastCGI.

После изменения config.php на

$config['uri_protocol'] = "REQUEST_URI";

все сработало.

Ответ 2

Оставив этот ответ здесь для других, которые столкнулись с моей ситуацией.

Мое приложение codeigniter работало нормально в localhost/WAMP, но не удалось выполнить маршрутизацию и обработать 404 не найденных ошибок при нажатии на экземпляр AWS EC2. Моя проблема была решена из ответа ЗДЕСЬ htaccess работает в localhost, но не работает в экземпляре EC2

(маршрут к моей странице администратора) {domain}/admin производил 404

необходимо изменить файл /etc/httpd/conf/httpd.conf.

- после каждого экземпляра "DocumentRoot" /var/www/html "(2 места)" AllowOverride None "необходимо изменить на" AllowOverride All".

Перезагрузите экземпляр EC2 с панели управления AWS.

{domain}/admin теперь доступен и работает по назначению.

надеюсь, что это поможет кому-то другому, как это помогло мне!

Ответ 3

Вы можете попробовать одну из двух вещей или комбинацию обоих.

  • Убедитесь, что имя вашего контроллера начинается с заглавной буквы. например, "Mycontroller.php"
  • Если вы не внесли никаких изменений в свой маршрут, по какой-то странной причине вам, возможно, придется указать заглавные буквы в вашем URL-адресе. например, если ваш контроллер "Mycontroller.php" с функцией "testfunc" внутри него, тогда ваш URL-адрес будет выглядеть следующим образом: " http://www.yourdomain/index.php/Mycontroller/testfunc". Обратите внимание на заглавную букву. (Я предполагаю, что вы не добавили файл htaccess для удаления части "index.php". Если у вас есть, просто удалите его из URL-адреса.)

Я надеюсь, что это поможет кому-то

Ответ 4

Структура папки/файла кажется мне немного странной. Я не могу понять, как это вышло.

Здравствуйте, я использую CodeIgniter для двух приложений (общедоступное и административное приложение).

Это звучит так, как будто у вас есть две отдельные установки CI. Если это так, я бы рекомендовал против этого. Почему бы просто не обрабатывать все админы в контроллере администратора? Если вам нужны две отдельные установки CI, убедитесь, что они определенно разные объекты и что они не конфликтуют друг с другом. Эта строка:

$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)

И место, где вы сказали, что это существует (/admin/index.php...или вы имели в виду /admin/application/config?), я почесал голову. У вас есть admin/application/admin и системная папка на верхнем уровне?

Ответ 5

мы должны дать имя контроллера в нижнем регистре на стороне сервера

$this->class = strtolower(__CLASS__);

Ответ 6

В моем случае я использовал его на localhost и забыл изменить RewriteBase в .htaccess.

Ответ 8

У меня была такая же проблема после перехода на новую среду, и просто было, что сервер не запускал mod_rewrite

быстрый sudo a2enmod rewrite то sudo systemctl restart apache2

и проблема решена...

Спасибо @fanis, который указал на это в своем комментарии к вопросу.

Ответ 9

Проверьте свой каталог, найдите любое пространство Codignater MAny Times дает ошибку, когда вы занимаете место в своем каталоге Codignater Удалить все пространство из каталога Пример

ITWORLD compk

измените его на

ITWORLD_COM_PK