У меня была эта проблема на GoDaddy, и она сводила меня с ума, но я нашел решение. Отправка кода состояния 200 (заголовок («HTTP / 1.1 200 OK»);) не избавила меня от 404. У меня было правило mod_rewrite, которое перенаправляло стандартный URL-адрес в мой index.php, поэтому URL-адрес был следующим:
www.example.com/myroute/ajax_get_current
Был отправлен в мое приложение по сути так:
www.example.com/index.php/myroute/ajax_get_current
Довольно стандартные вещи. Проблема возникла, когда я создал файл в корне документа с тем же именем, что и мой маршрут:
DOCROOT/myroute.php
Тогда я получу результат в точности как описано - ошибка 404, но правильный ответ. Я подтвердил, что если я изменю файл на «myroute_cron.php», 404 исчезнет (правильные 200), и если я верну его обратно, он выдаст 404.
Я понятия не имею, почему это происходит (особенно потому, что он явно выполнял правильный сценарий для получения правильного ответа), возможно, что-то с MultiViews. Надеюсь, это поможет.