2009-11-03 5 views
7

Je traversais le tutoriel officiel CodeIgniter quand je frappe un accroc ...Code Igniter Appel de fonction 404

Le tutorial me avait enregistrer et exécuter ce code:

<?php 
class Blog extends Controller { 

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

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

Si j'entre la URL suivante:

index.php/blog

il fonctionne et affiche "Bonjour tout le monde!".

Lorsque je modifie l'URL pour afficher les commentaires comme suit:

index.php/blog/comments/

Je reçois un 404.

+0

Avez-vous utilisé un routage quelconque? ou Mod_rewrite? À part ça, je n'arrive pas à comprendre comment ça ne marche pas. [1]: http://codeigniter.com/user_guide/general/routing.html –

+0

Il s'agit presque certainement d'un problème de routage. Assurez-vous de ne pas avoir d'itinéraires attrape-tout à partir des étapes précédentes dans le guide de l'utilisateur. Si vous avez des fourre-tout, il ne sera pas acheminé correctement vers le contrôleur. – treeface

Répondre

1

Par défaut, votre exemple devrait fonctionner. Examinez vos configurations et supprimez .htaccess car votre exemple n'utilise pas mod_rewrite.

partir de zéro vous aide également à apprendre;)

0

J'est un problème de mise à jour du fichier.

2

si vous ajoutez un? après index.php ça marche?

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

J'ai eu le même problème. A fini par être que je n'ai jamais fermé ma première fonction - je suis parti le dernier}. La fonction que je n'ai pas fermée fonctionnait bien, mais tout le reste m'a donné un 404.

1

Il vaut toujours la peine d'essayer certaines des options $ config ['uri_protocol'] dans 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'; 

Certains serveurs ont des problèmes avec différentes options, essayez-les donc manuellement. Cela peut ne pas fonctionner dans votre cas, mais a sauvé la journée pour moi dans le passé.

2

Je suis tombé sur ce vieux post sans une bonne réponse à la question de savoir pourquoi cela se passait. Je suis également tombé sur la même erreur apparente que vous avez faite et luttais pour y remédier. Je me suis rendu compte que le problème venait du routage qui avait été défini dans les exemples CI précédents. Ma page ne fonctionnait pas du tout à moins que j'ajouté la ligne suivante dans config/routes.php:

$['blog'] = 'blog'; 

C'est à cause de cette ligne qui prend en compte quelque chose, autre que ce que vous aviez déjà défini, comme arguments pour la racine:

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

Si vous supprimez la ligne ci-dessus, il y aura tous les travaux, à l'exception de la racine ne fonctionnera pas plus comme dans les précédents tutoriels. Je devais aussi ajouter la ligne suivante afin que nous puissions appeler des fonctions à l'intérieur du contrôleur:

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

Avec ces deux deux ajouté, vous pouvez appeler des fonctions à la racine mais aussi un travail de commande « blog ».

0

Dans certaines versions de CodeIgniter votre nom du contrôleur (nom de fichier) doit être commencer par lettre majuscule

par exemple ..Si la première lettre du fichier n'est pas capitale, elle peut afficher une erreur 404.