Я использую 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. Моя проблема была решена из ответа от HERE 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. Многие времена дают ошибку, когда вы занимаете место в своем каталоге Codignater. Удалите все пространство из примера каталога.
ITWORLD compk
измените его на
ITWORLD_COM_PK