Так что это досадная проблема, когда что-то отлично работает в вашем локальном проекте, но все разваливается после развертывания в производстве.
В этом случае, я могу получить доступ ко всем страницам, сгенерированным обычным контроллером codeigniter (находится в приложении / контроллерах). Однако, как только я пытаюсь получить доступ к модулю HMVC, я просто получаю ошибку codeigniter 404.
Ситуация все еще в порядке для обычных контроллеров:
Так, например, если у меня есть обычный контроллер C1, расположенный в application / controllers / C1.php, который содержит функцию page (), я могу получить доступ к www.mysite.com/C1/page без проблем.
Проблема доступа к контроллерам HMVC:
Однако, если я хочу получить доступ к контроллеру C2, расположенному в application / modules / C2 / controllers / C2.php, через URL-адрес www.mysite.com/C2/page, я получу ошибку 404.
И проблема с доступом к обычному контроллеру через ajax:
Вторая проблема возникает при выполнении вызова ajax, используя путь, который ссылается на обычный контроллер CI. Путь, используемый в вызове ajax, похоже, не распознан, и я получаю ошибку 500. Тем не менее, при вызове того же пути непосредственно в строке URL, правильная функция, кажется, выполняется. Я решил подобную проблему раньше, применяя решение, найденное в Codeigniter base_url () не работает должным образом для AJAX. Тем не менее, я еще не определил, если это та же проблема.
Это похоже на проблему с загрузчиком, но я не эксперт!
Даже если это проблема загрузчика, почему он работает на локальном, а не на производстве?
Вы когда-нибудь сталкивались с чем-то подобным? У вас есть идея, как решить эту проблему?
** Редактировать 3: ** Я удалил 2 предыдущих редактирования, потому что теперь они не имеют значения.
После активации режима отладки и добавления некоторых журналов я наконец нашел то, что я думаю, чтобы быть ответом.
Короче говоря, моя локальная версия codeigniter работает на Windows, и по какой-то причине при попытке связаться с контроллером случай игнорируется. Так File.php и еile.php считаются одинаковыми.
Мой рабочий сервер работает под управлением Linux, поэтому он не учитывает, что два разных имени файла относятся к одному и тому же файлу. Поэтому я прошу еile.php, и сервер отвечает «такого файла нет», потому что файл, который я на самом деле хочу, File.php.
Мне нужно сдать. Я предложу правильный ответ завтра, после еще нескольких проверок.
Спасибо,
Лоик.
Таким образом, проблема не была связана с обычными контроллерами по сравнению с контроллерами HMVC. В основном происходит то, что моя локальная среда разработки — Windows, и по какой-то причине Windows решает, что при именовании файла случай не имеет значения.
Так еile.php будет выглядеть так же, как File.php (обратите внимание, что первая строчная, а вторая прописная).
В своем коде я пытался получить еile.php (в нижнем регистре), а сам файл был назван File.php и все заработало на windows.
Однако в цивилизованных операционных системах File.php и еile.php считаются двумя разными именами, и поэтому вдруг вещи, которые не работают в производстве, даже если код был одинаковым. Файлы контроллера просто не могут быть найдены.
Я изменил имена файлов моего контроллера (поместил их в нижний регистр), и теперь все работает нормально.
Спасибо всем за ваши предложения.
Лоик.
С HMVC маршруты должны быть похожи
$route['something'] = "module/controller/function";
$route['something/(:any)'] = "module/controller/function/$1";
Также убедитесь, что при использовании контроллеров intead из welcome.php убедитесь, что имя контроллера, например, Welcome.php
При использовании маршрутов, если не удалить index.php из контроллера, тогда URL будет