Pages d'erreur

River permet de personnaliser les pages 403 et 404 avec vos propres templates et votre design.

Backward compatible : Si aucune vue n'existe, River retombe sur la réponse texte brut — rien ne casse.

Principe

Après l'exécution de la pipeline, Http_engine intercepte les réponses 403 et 404. Si une vue correspondante existe dans app/Views/errors/, elle est rendue à la place de la réponse texte brut. La vue gère son propre HTML complet (rendue sans layout).

Créer une page d'erreur

Créez les fichiers dans app/Views/errors/ :

// app/Views/errors/404.php
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Page introuvable</title>
</head>
<body>
    <h1>404 — Page introuvable</h1>
    <p>La page que vous cherchez n'existe pas.</p>
    <a href="/">Retour à l'accueil</a>
</body>
</html>
// app/Views/errors/403.php
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Accès restreint</title>
</head>
<body>
    <h1>403 — Accès restreint</h1>
    <p>Vous n'avez pas les droits pour accéder à cette page.</p>
    <a href="/">Retour à l'accueil</a>
</body>
</html>
Ces templates sont rendus sans layout. Ils doivent contenir un HTML complet (doctype, head, body) avec leurs propres assets CSS si besoin.

Variable disponible

La variable $status est injectée dans le template :

<h1><?= $status ?> — Erreur</h1>

Fichiers concernés dans River

FichierRôle
src/View.phpexists(string $template): bool — vérifie si un template existe dans tous les chemins enregistrés
src/Http_engine.phpresolve_error_page() — intercepte 403/404 et tente de rendre la vue custom