Codeigniter Controller 404 и проблемы с маршрутизацией

так что у меня был опыт создания приложений codeigniter в прошлом, поэтому я немного знаком с фреймворком

однако раньше я работал непосредственно из корня (http://domain.com/)

В настоящее время я пытаюсь разработать и развернуть приложение, которое будет размещено в подпапках (http://domain.com/foo/bar)

У меня есть приличное понимание маршрутизации, но я не уверен, что происходит. переход на http://domain.com/foo/bar загружается без проблем, но каждый раз, когда я пытаюсь добавить новый маршрут, такой как http://domain.com/foo/bar/myController -- я получить 404. Сервер, по сути, пытается загрузить http://domain.com/foo/bar/myController/index.php по сравнению с использованием контроллера фреймворка —

это какая-то конфигурация или настройка сервера? мне нужно что-то делать с htaccess? (все, что мне приходилось делать в прошлом, это вычищать index.php из URL-адреса)

для справки, проблема не в том, что контроллер сломан/отсутствует/назван неправильно, если я установлю контроллер по умолчанию на myController, страница загрузится без проблем.

Я немного в замешательстве и ищу любой совет. заранее спасибо.


person Markus013    schedule 15.07.2015    source источник
comment
У вас включен mod_rewrite с Apache? Если да, то есть ли у вас файл .htaccess в корне вашего приложения (т.е. рядом с CI index.php), который соответствует github.com/bcit-ci/CodeIgniter/wiki/Mod-rewrite? Наконец, разрешили ли вы переопределения в файле httpd.conf в каталоге CodeIgniter?   -  person Joel Lubrano    schedule 15.07.2015
comment
Привет! У меня есть именно этот файл .htaccess в корневой папке моей установки CI. как ни странно, я не вижу модуль mod_rewrite в выводе phpinfo(), но я уверен, что мы использовали файлы htaccess для изменения URL-адресов раньше с перезаписи. Я также проверил свой обычный сервер разработки (где у меня есть работающие приложения codeigniter) и столкнулся с той же проблемой «нахождения» модуля mod_rewrite - что касается файла httpd.conf, я не совсем уверен. Я знаю, что на сервере Windows работает apache, если это имеет значение, но в настоящее время у меня есть доступ только к FTP, а не к терминалу/SSH.   -  person Markus013    schedule 15.07.2015
comment
Если у вас действительно есть именно этот файл .htaccess, вам нужно изменить директиву RewriteBase в файле .htaccess. Я думаю, что RewriteBase в вашем случае должен быть URL-адресом, который будет указывать на ваш CodeIgniter index.php. Если ваш CI index.php доступен из domain.com/foo/bar/index.php, то ваша RewriteBase, вероятно, должна быть /foo/bar/. Опять же, директива RewriteBase также может быть корневым каталогом CI, как он назван в файловой системе вашего сервера. документация Apache не была особенно подробной.   -  person Joel Lubrano    schedule 16.07.2015


Ответы (1)


Вроде нужно установить base_url (application/config/config.php):

$config['base_url'] = 'http://domain.com/foo/bar';
person André Laszlo    schedule 15.07.2015
comment
Извините, я должен был указать это в своем посте, но у меня правильно настроен base_url. одна вещь, которая ВОЗМОЖНО может быть частью проблемы - установка находится на domain.com/foo/bar, но «настоящий путь» - domain.com/foobar/bar (я не уверен, что используется для перезаписи имя папки, но я бы предположил, что htaccess или какая-то другая конфигурация сервера) просто для пояснения вышесказанного: отображается «живой» URL-адрес и работает как: domain.com/foobar/bar, но на FTP первая папка на самом деле по имени 'фу' - person Markus013; 15.07.2015