2009-11-03 20 views
7

yo estaba pasando por el tutorial oficial CodeIgniter cuando me golpeó una pega ...CodeIgniter Función de llamada 404

El tutorial me hizo guardar y ejecutar este código:

<?php 
class Blog extends Controller { 

    function index() 
    { 
     echo 'Hello World!'; 
    } 

    function comments() 
    { 
     echo 'Look at this!'; 
    } 
} 
?> 

si entro en la siguiente URL:

index.php/blog

funciona y muestra "Hello World!".

Cuando modifico la URL para mostrar los comentarios de la siguiente manera:

index.php/blog/comments/

me siento un 404.

+0

¿Has utilizado algún tipo de enrutamiento? o Mod_rewrite? Aparte de eso, no puedo entender cómo no funciona. [1]: http://codeigniter.com/user_guide/general/routing.html –

+0

Esto es casi seguro un problema de enrutamiento. Asegúrese de no tener ninguna ruta catch-all de los pasos anteriores en la guía del usuario. Si tiene algo atrapado, no se enrutará correctamente al controlador. – treeface

Respuesta

1

Por defecto, su ejemplo debería funcionar. Examine sus configuraciones y elimine .htaccess, ya que su ejemplo no utiliza mod_rewrite.

de inicio desde cero también ayuda a aprender;)

0

que es un problema de actualización del archivo.

2

si agrega un? después de que index.php funciona?

http://example.com/index.php?/blog/comments 
0

Tuve el mismo problema. Terminé diciendo que nunca cerré una de mis primeras funciones, dejé la última}. Así que la función que no cerré funcionaba bien, pero todo lo demás me seguía dando un 404.

1

Siempre vale la pena probar algunas de las opciones de $ config ['uri_protocol'] en application/config/config.php.

/* 
|-------------------------------------------------------------------------- 
| URI PROTOCOL 
|-------------------------------------------------------------------------- 
| 
| This item determines which server global should be used to retrieve the 
| URI string. The default setting of "AUTO" works for most servers. 
| If your links do not seem to work, try one of the other delicious flavors: 
| 
| 'AUTO'   Default - auto detects 
| 'PATH_INFO'  Uses the PATH_INFO 
| 'QUERY_STRING' Uses the QUERY_STRING 
| 'REQUEST_URI'  Uses the REQUEST_URI 
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO 
| 
*/ 
$config['uri_protocol'] = 'AUTO'; 

Algunos servidores tienen problemas con las diferentes opciones, por lo que intente cada uno manualmente. Puede que esto no funcione en su caso, pero me ha salvado el día en el pasado.

2

Me encontré con esta publicación anterior sin una buena respuesta de por qué estaba sucediendo. Yo también encontré el mismo error aparente que tú y estaba luchando por arreglarlo. Me di cuenta de que el problema provenía del enrutamiento que se estableció en ejemplos anteriores de CI. Mi página no funcionaba en absoluto a menos que añade la siguiente línea dentro config/routes.php:

$['blog'] = 'blog'; 

Eso se debe a que de esta línea que tiene en cuenta nada, aparte de lo que ya se había puesto, como argumentos para la root:

$route['(:any)'] = 'pages/view/$1'; 

Si se quita la línea de arriba, que va a todo el trabajo, excepto la raíz no va a funcionar más como lo hizo en los tutoriales anteriores. Tenía que también añadir la siguiente línea para que podamos llamar a las funciones dentro del controlador:

$route['blog/(:any)'] = 'blog/$1'; 

Con ambos de estos dos añadido, puede llamar a las funciones de la raíz y sin embargo, también tienen un controlador de "blog" de trabajo.

0

En algunas versiones de CodeIgniter su nombre de controlador (nombre de archivo) debe ser empezar con mayúscula

por ejemplo ..

Blog.php 

si la primera letra del archivo no es mayúscula, entonces puede mostrar el error 404.

Cuestiones relacionadas