Passer au contenu principal
Comment créer une page 404 personnalisée sur CodeIgniter (Guide CI3 et CI4)

Comment créer une page 404 personnalisée sur CodeIgniter (Guide CI3 et CI4)

Contenu du guide

La page d'erreur 404 Not Found est un composant essentiel de toute application web développée avec le framework CodeIgniter. Lorsqu'un visiteur tente d'accéder à une URL inexistante ou à un lien brisé, il est primordial d'afficher une page 404 personnalisée, claire et élégante plutôt qu'une page d'erreur serveur générique ou un écran blanc.

Dans ce guide complet et détaillé, nous allons découvrir comment créer et configurer une page 404 personnalisée dans CodeIgniter pour les deux versions majeures : CodeIgniter 3 (CI3) et CodeIgniter 4 (CI4). Nous aborderons les configurations de routage, les contrôleurs personnalisés, la gestion des réponses JSON pour les requêtes AJAX et API REST, les en-têtes de statut HTTP et les meilleures pratiques pour préserver votre référencement SEO et l'expérience utilisateur.

Pourquoi personnaliser la page 404 dans CodeIgniter ?

La personnalisation de la page 404 offre plusieurs avantages techniques et marketing indispensables pour les sites web et applications professionnels :

  • Amélioration de l'expérience utilisateur (UX) : Une page personnalisée inclut une barre de recherche, des liens vers les sections clés et un bouton de retour à l'accueil, empêchant le visiteur d'abandonner immédiatement le site.
  • Protection du référencement SEO : L'envoi du statut HTTP 404 Not Found signale aux moteurs de recherche comme Google de ne pas indexer les pages manquantes (évitant les erreurs de type Soft 404).
  • Cohérence de l'image de marque : Intégrer votre en-tête, votre pied de page et votre charte graphique garantit une continuité visuelle professionnelle sur l'ensemble de la plateforme.
  • Détection des liens cassés : Vous pouvez intégrer un système de journalisation (logging) dans votre contrôleur 404 pour identifier et réparer automatiquement les URLs défectueuses.

Étape 1 : Personnaliser la page 404 dans CodeIgniter 3

Dans CodeIgniter 3, il existe deux méthodes pour modifier la réponse 404 : modifier le vue par défaut ou utiliser un contrôleur de substitution 404_override.

Méthode 1 : Modification directe du modèle de vue par défaut dans CI3

CodeIgniter 3 fournit un fichier de vue d'erreur par défaut situé à l'emplacement :

application/views/errors/html/error_404.php

Vous pouvez éditer directement ce fichier HTML et CSS. Bien que rapide, cette méthode ne permet pas de charger facilement des modèles, bibliothèques ou helpers CodeIgniter de manière dynamique.

Méthode 2 : Utiliser 404_override avec un contrôleur personnalisé dans CI3 (Recommandé)

Pour bénéficier de toute la puissance des contrôleurs CodeIgniter dans votre page 404, utilisez la directive 404_override :

  • Configuration des routes (routes.php) : Ouvrez application/config/routes.php et définissez :
    $route['404_override'] = 'mycustom404';
  • Création du contrôleur (Mycustom404.php) : Créez le fichier application/controllers/Mycustom404.php :
    <?php
    class Mycustom404 extends CI_Controller {
        public function __construct() {
            parent::__construct();
        }
        public function index() {
            $this->output->set_status_header('404');
            $data['title'] = 'Page non trouvée - 404';
            log_message('error', '404 Page Not Found: ' . current_url());
            $this->load->view('custom_404_view', $data);
        }
    }
  • Création de la vue (custom_404_view.php) : Créez le fichier application/views/custom_404_view.php contenant votre design personnalisé.

Étape 2 : Personnaliser la page 404 dans CodeIgniter 4

Dans CodeIgniter 4, l'architecture a été modernisée avec une gestion élégante des exceptions et des objets de réponse.

Méthode 1 : Personnaliser la vue d'erreur dans CI4

En environnement de production, CI4 charge le modèle d'erreur situé dans :

app/Views/errors/html/error_404.php

Modifiez ce fichier pour adapter le rendu lorsqu'une PageNotFoundException est levée en production.

Méthode 2 : Configurer le contrôleur 404 Override dans CI4

Pour exécuter un contrôleur dédié dans CodeIgniter 4, configurez app/Config/Routes.php :

  • Définir le gestionnaire Override : Dans app/Config/Routes.php, ajoutez :
    $routes->set404Override('App\Controllers\NotFound::index');
  • Créer le contrôleur NotFound : Créez app/Controllers/NotFound.php :
    <?php
    namespace App\Controllers;
    use CodeIgniter\Exceptions\PageNotFoundException;
    class NotFound extends BaseController {
        public function index() {
            response()->setStatusCode(404);
            log_message('warning', 'CI4 404: ' . current_url());
            return view('errors/custom_404');
        }
    }

Gestion des requêtes AJAX et réponses 404 JSON pour API REST

Lors du développement d'applications modernes basées sur des API REST ou des requêtes AJAX, renvoyer une page HTML complète en cas d'URL manquante casse l'analyse côté client. Il est recommandé de détecter les requêtes asynchrones et d'envoyer du JSON.

Gestion JSON 404 dans CodeIgniter 3

Dans votre contrôleur Mycustom404.php, vérifiez si la requête est AJAX ou cible l'API :

if ($this->input->is_ajax_request() || strpos($this->uri->uri_string(), 'api/') === 0) {
    $this->output
        ->set_status_header(404)
        ->set_content_type('application/json', 'utf-8')
        ->set_output(json_encode([
            'status' => false,
            'error' => 404,
            'message' => 'Route API introuvable'
        ]));
    return;
}

Gestion JSON 404 dans CodeIgniter 4

Dans CodeIgniter 4, utilisez la négociation de contenu ou contrôlez l'en-tête de requête dans NotFound.php :

$request = service('request');
if ($request->isAJAX() || $request->header('Accept')?->getValue() === 'application/json') {
    return response()->setStatusCode(404)->setJSON([
        'success' => false,
        'code' => 404,
        'message' => 'Ressource introuvable'
    ]);
}

Garantir le statut HTTP 404 pour le référencement SEO

Une erreur fréquente consiste à renvoyer une page 404 avec un statut HTTP 200 OK. Cela indique aux moteurs de recherche que la page est valide, provoquant des pénalités d'indexation (Soft 404).

Assurez-vous toujours que votre contrôleur renvoie explicitement le code HTTP 404 :

  • Dans CodeIgniter 3 : $this->output->set_status_header('404');
  • Dans CodeIgniter 4 : response()->setStatusCode(404); ou levez throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();

Configuration des réécritures serveur (Nginx & Apache)

Pour garantir que toutes les requêtes d'URLs inexistantes soient correctement acheminées via CodeIgniter, vérifiez vos règles de réécriture :

  • Règles .htaccess Apache : Placez un fichier .htaccess à la racine du projet :
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
  • Configuration Nginx : Assurez-vous que votre bloc serveur redirige vers index.php :
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

Journalisation des erreurs 404 et redirections automatiques

La mise en place d'un contrôleur 404 sur mesure vous permet d'enregistrer automatiquement les URLs manquantes dans les logs ou en base de données. L'analyse régulière de ces données permet d'identifier les liens obsolètes et d'ajouter des redirections 301 Permanent Redirect pour conserver votre trafic.

Impact de la qualité de l'hébergement sur la gestion des erreurs 404

Lors de pics de trafic ou d'attaques de robots d'exploration, les requêtes 404 répétées peuvent solliciter le serveur. Optez pour les forfaits d'hébergement Cloud de VavaHost pour assurer une exécution PHP ultra-rapide et une gestion serveur optimale.

Pour découvrir d'autres solutions d'optimisation web, consultez notre guide sur la résolution de l'erreur ERR_CACHE_MISS.

Conseils pour concevoir une page 404 efficace

Transformez une erreur 404 en opportunité d'engagement grâce à ces conseils pratiques :

  • Message clair : Indiquez poliment que la page demandée n'existe pas ou a été déplacée.
  • Champ de recherche visible : Permettez aux visiteurs de trouver facilement du contenu alternatif.
  • Liens de navigation essentiels : Ajoutez des accès rapides vers la page d'accueil, les services et le support.
  • Visuel accueillant : Utilisez des illustrations adaptées à votre charte graphique.

Points clés à retenir

Configurer une page 404 dans CodeIgniter est une étape indispensable pour préserver la qualité de votre référencement SEO, maintenir la confiance de vos utilisateurs et offrir une expérience web irréprochable sur CodeIgniter 3 et 4.

Prêt à lancer un site plus rapide ?

Profitez d'un domaine gratuit, d'un certificat SSL et de sauvegardes automatiques. Essayez sans aucun engagement.

Découvrir nos offres

Trouvez Votre Plan Gratuit

Quel type de projet créez-vous ?

Nous sélectionnerons le plan idéal selon vos besoins réels