Слушай, это самый глупый ответ за всю историю, но это мой опыт с подобной ситуацией, которая только что случилась. Я был беспомощен, но он начал работать - вот как.
У меня есть один контроллер, вызывающий ReadController.php (класс называется так же).
Маршрут был тот же:
$route['default_controller'] = "ReadController";
Вызов с www.martinjovanovic.com/DSi1.5-v01/index.php/ReadController/
- сработало.
Но назвать его просто martinjovanovic.com/DSi1.5-v01/
просто не получится вообще.
Базовый URL-адрес принадлежал моему домену и папке: wwww.martinjovanovic.com/DSi1.5-v01/
Никаких изменений в htaccess вообще нет, я оставил его по умолчанию (Запретить все).
- Я переключил контроллер по умолчанию обратно на welcome.php.
- Сделал копию, назвал ее welcome2.php. Класс переименован соответственно.
- Изменены маршруты на welcome2. Это сработало. Тот же экран приветствия.
- Изменен index () внутри welcome2.php для некоторого эха («что-то»). Это сработало.
- Переименован в welcome2.php в read.php, соответственно. Поменял это в маршрутах. Это сработало.
- Скопируйте весь код из оригинального файла ReadController.php в файл read.php. Это сработало.
Вот так. То же самое начало работать.
Единственная разница между исходным файлом ReadController.php и новым файлом read.php была в первой строке. В моем новом read.php я сохранил первую строку, которая фактически отсутствовала в старом ReadController.php (мой разработчик пропустил это, я думаю):
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Это было сразу после открытия php-тега.
Это была единственная разница. Я не понимаю, почему это так важно. Может дело не в этом вообще. Тем не менее, это сработало.
И мораль этой истории такова: я начал с того, что сработало в первую очередь, и продолжал медленно менять его к тому, что мне нужно, пока оно не сработало ...