Da Bourz Blog

Aller au contenu | Aller au menu | Aller à la recherche

samedi, 28 janvier 2012

Page 404 personnalisée avec CodeIgniter

Dans la catégorie des petits trucs faciles voyons ensemble aujourd'hui comment virer la page 404 par défaut d'une application CodeIgniter.

En effet, si vous utilisez les jolies URLs avec le "Controller" de CodeIgniter qui gere vos liens, toutes les requêtes passerons donc par lui et si le lien n'est pas bon il renverra la page d'erreur du framework, mais en plus sans un 404 correct au niveau de la réponse. Ce qui évidement est mal.

Voyons donc comment régler les deux problèmes simultanément :

D'abord dans le fichier "routes.php" trouvez la ligne :

$route['404_override'] = '';

et remplacez la par :

$route['404_override'] = 'welcome/pastrouve';

Cela suppose que vous avez gardé le "Controller" par défaut de l'application exemple, sinon remplacez par le nom de votre "Controller" principal comme :

$route['404_override'] = 'moncontroleur/pastrouve';

Vous aurez remarqué que je n'utilise pas un "Controller" entier pour faire cette page, mais comme je suis econome je me contente de rajouter une methode dans mon controle principal. Libre à vous d'en créer un si vous en ressentez le besoin.

Donc ensuite ouvrez votre "Controller", ici "Welcome.php" et créez la fonction "pastrouve" :

public function pastrouve()
{
header("HTTP/1.1 404 Not Found");
$this->load->view('view_404');
}

Voilà, très simple, ici on se contente de mettre le bon "Header" avec la fonction adéquate, puis de charger le template personnalisé de notre page d'erreur (ici "view_404.php" dans les vues) et c'est terminé ! Vous pouvez pousser un peu plus loin le bouchon en récupérant l'URL demandée et en la passant en variable au template pour l'afficher à vos visiteurs avec la fonction "current_url()".

Bonne personnalisation, et si vous faites des 404 sympas postez les dans les commentaires.

samedi, 13 octobre 2007

Erreur 404 avec PHP

Inauguration de la catégorie PHP avec ce billet.

Ce matin je cherchais le meilleur moyen de faire une redirection 404 propre avec PHP pour virer les spammeurs de trackbacks du blog, j'ai trouvé et je met la recette ci dessous :

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

A savoir quand même que si vous voulez vraiment montrer une page d'erreur il faudra ensuite l'inclure, car ce script ne fait que renvoyer proprement l'erreur au navigateur, et Apache ne renvoi pas sa page 404 depuis PHP.