Error 404 con routing dinámico en CodeIgniter

Si estás intentado utilizar las rutas dinámicas en los controladores de CodeIgniter y obtienes un error 404 en cualquier test dinámico pero el controlador sin variables sí funciona, aquí tienes la causa y la solución. Comprueba los síntomas:

Síntomas

  • tusite.com/controlador-dinamico/ funciona, respondiendo con index()
  • tusite.com/controlador-dinamico/variable1/variableN/ responde con**** error 404****
  • La URL completa es correcta
  • La configuración del .htaccess y routing dinámico está correctamente

Causa

Debes revisar el concepto de enrutado de CodeIgniter, consulta la documentación. La causa radica en que las variables dinámicas no están siendo recibidas como tales al controlador, sino que se intenta acceder a la variable1() como función del controlador.

Solución

Edita el fichero config/routes.php y añade:

$route['**controlador-o-texto**/(:any)/(:any)'] = "controlador/funcion/$1/$2";

:num Si es variable numérica, únicamente
:any Si es variable de cualquier contenido (alfanumérico)