Ответ 1
Причиной проблемы было то, что на сервере был запущен PHP с использованием FastCGI.
После изменения config.php на
$config['uri_protocol'] = "REQUEST_URI";
все сработало.
Я использую 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 ошибки.
Любые идеи? Что я делаю не так? благодаря С.
Причиной проблемы было то, что на сервере был запущен PHP с использованием FastCGI.
После изменения config.php на
$config['uri_protocol'] = "REQUEST_URI";
все сработало.
Оставив этот ответ здесь для других, которые столкнулись с моей ситуацией.
Мое приложение 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 теперь доступен и работает по назначению.
надеюсь, что это поможет кому-то другому, как это помогло мне!
Вы можете попробовать одну из двух вещей или комбинацию обоих.
Я надеюсь, что это поможет кому-то
Структура папки/файла кажется мне немного странной. Я не могу понять, как это вышло.
Здравствуйте, я использую 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 и системная папка на верхнем уровне?
мы должны дать имя контроллера в нижнем регистре на стороне сервера
$this->class = strtolower(__CLASS__);
В моем случае я использовал его на localhost
и забыл изменить RewriteBase
в .htaccess
.
например:
Имя вашего контроллера - YourController
Ваш URL должен быть:
http://example.com/index.php/yourcontroller/method
Не будет:
У меня была такая же проблема после перехода на новую среду, и просто было, что сервер не запускал mod_rewrite
быстрый sudo a2enmod rewrite
то sudo systemctl restart apache2
и проблема решена...
Спасибо @fanis, который указал на это в своем комментарии к вопросу.
Проверьте свой каталог, найдите любое пространство Codignater MAny Times дает ошибку, когда вы занимаете место в своем каталоге Codignater Удалить все пространство из каталога Пример
ITWORLD compk
измените его на
ITWORLD_COM_PK