La razón más común por la que "funciona en localhost, pero da 404 en el servidor" es por no seguir los requisitos de nomenclatura de archivos de CodeIgniter.

Esto les sucede mucho a los desarrolladores cuando localhost está en un sistema Windows y el servidor es Linux; El primer sistema operativo no distingue entre mayúsculas y minúsculas, pero el último distingue entre mayúsculas y minúsculas.

  • El primer carácter en los nombres de archivo de Controladores, Bibliotecas y Modelos DEBE estar en mayúscula.
  • Todos los demás caracteres en el nombre del archivo deben estar en minúsculas
Ahora, beben ser iguales al nombre de la clase...
  • Los nombres de archivo y los nombres de clase deben ser exactamente iguales

Para empezar a programar en CodeIgniter vamos a crear un controlador en la carpeta "system/application/controllers/"

  • En nombre del archivo de controlador, en este caso controlador.php, va en minúsculas.
  • El nombre de la clase que implementa el controlador se tiene que llamar igual que el nombre del archivo, pero fijaros que tiene obligatoriamente la primera letra en mayúscula (Controlador).
  • Todos los controladores tienen que extender la clase "Controller" (que también tiene la primera letra "C" en mayúscula).
  • Los nombres de las clases proporcionadas por el framework codeigniter ahora tienen un prefijo "CI_".