Страница 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';

Добро пожаловать - мой контроллер по умолчанию.

Когда я вызываю Домен/администратора, я получаю сообщение об ошибке 404 Страница Не найдена. Когда я звоню до домена/администратора/приветствия все работает нормально. В журналах отладки я получаю следующее сообщение об ошибке:

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 (с локальным доменом/admin/), но когда я публикую и тестирую ее на "живом" сервере, я просто получаю 404 ошибки.

Есть идеи? Что я делаю не так? Спасибо С.

Author: Joseph, 2010-09-20

9 answers

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

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

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

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

 16
Author: Joseph, 2010-09-22 12:54:24

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

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

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

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

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

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

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

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

 6
Author: JoshuaC, 2017-05-23 12:09:27

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

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

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

 3
Author: Amin Balogun, 2017-01-14 00:38:08

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

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

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

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

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

 1
Author: treeface, 2010-09-20 16:32:10

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

$this->class = strtolower(__CLASS__);
 1
Author: MAK, 2012-08-24 07:31:26

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

Быстрый sudo a2enmod rewrite затем sudo systemctl restart apache2

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

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

 1
Author: Antony P., 2017-07-13 15:02:25

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

 0
Author: user3526, 2015-11-16 17:13:58
  1. Измените имя контроллера на первую букву в верхнем регистре.
  2. Измените свой URL-адрес так же, как и имя контроллера.

Например:

Имя вашего контроллера - ваш контроллер

Ваш URL-адрес должен быть:

Http://example.com/index.php/YourController/method

Не быть:

Http://example.com/index.php/yourcontroller/method

 0
Author: DevYuan, 2017-03-17 09:39:37

Проверьте Свой Каталог, Найдите Любое Свободное Место Codignater Много Раз Выдает Ошибку, Когда Вы Размещаете В Своем Каталоге Codignater Удалить Все Пространство Из Каталога Пример

ITWORLD compk

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

ITWORLD_COM_PK
 -2
Author: Danyial Shahid Ali, 2016-01-15 16:18:32