Codeigniter & PHP - forcer une erreur 404?

<!-Dans codeigniter, comme vous le savez, une page du formulaire:/class/function/ID, où class est le nom du controller, function est la méthode dans le controller, et ID est le paramètre à passer à cette méthode.

l'usage typique serait (pour un site de livre par exemple) de passer l'id de livre à la fonction qui interrogerait alors la base de données pour le livre approprié. Mon problème est celui-ci: je déconnais et j'ai tapé au hasard (dans la chaîne url) un ID qui n'est pas présent dans la base de données (avec normal point and click browsing cela ne se produirait jamais) et je reçois des erreurs de base de données en raison des requêtes résiduelles que je tente d'effectuer en utilisant un ID inexistant.

j'ai écrit du code pour vérifier s'il y a des lignes retournées avant d'essayer d'utiliser L'ID, mais si L'ID est inexistant, je voudrais que l'utilisateur obtienne une page d'erreur 404 plutôt qu'une page blanche ou quelque chose (puisque cela semble comme une fonctionnalité appropriée). Cela devrait être une page true 404 (pas simplement charger une vue qui cela ressemble à une page 404) de façon à ne pas toucher aux moteurs de recherche. Ok - donc ma question Est la suivante: dans le flux logique normal du programme (tel que décrit ci-dessus) Comment puis-je forcer une erreur 404 en utilisant codeigniter? Grâce.

mise à Jour: code de l'allumeur a un show_404('page') fonction mais je ne pense pas que cela va générer une véritable erreur HTTP 404...

23
demandé sur oym 2009-08-06 07:01:30

8 réponses

show_404() envoie en fait les en-têtes appropriés pour un moteur de recherche pour l'enregistrer comme une page 404 (Il envoie le statut 404).

utilisez un addon Firefox pour vérifier les en-têtes reçus lors de l'appel show_404(). Vous verrez qu'il envoie le Code D'état HTTP approprié.

Vérifier la valeur par défaut application/errors/error_404.php. La première ligne est:

<?php header("HTTP/1.1 404 Not Found"); ?>

cette ligne définit le statut HTTP comme étant 404. Tout ce dont vous avez besoin pour le moteur de recherche de lire votre page comme une page 404.

49
répondu Andrew Moore 2009-08-06 03:05:08

si vous voulez une page d'erreur personnalisée, vous pouvez faire la chose suivante.Dans vos bibliothèques, créez un nom de fichier MY_Exceptions et l'étendre avec CI_Exceptions.Et puis outrepasser la fonction show_404 ()