Bonsoir,
Je suis en train de dev un cms en php, j'utilise une architecture mvc et un systeme de routage. Depuis quelques jours j'essais de creer une page 404 perso sans succes
La RewriteRule fonctionne et le routeur affiche bien une erreur 404 lorsque ma requete GET n'existe pas, mais lorsque j'entre une URL (une page plus precisement) qui n'existe pas, la page index n'est pas appelee.
Voici le pseudo-code du router:
La vue de la page 404:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 if (file_exists(target)) { if (is_readable(target)) { include target_file if (class_exists(target_class)) { new target() } else { die('target controller class does not exist.'); } } else { die('target controller file not readable.'); } }else{ include 404 new 404() }
Le .htaccess:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); header('Content-type: text/html; charset=utf-8'); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>404</title> </head> <body> <h1>404:</h1> <p>L’URL demandée <strong><?php echo($data['request']); ?></strong> est introuvable sur ce serveur.</p> </body> </html>
Si je remplace par ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Options +FollowSymlinks RewriteEngine On RewriteRule ^([_a-z0-9]*)$ index.php?$1 [L] ErrorDocument 404 /index.php?error404
tout fonctionne, sauf que bien sur appache me redirige avec un code 302 (comme c'est ecrit dans la doc) et ce n'est evidement pas ce que je cherche!
Code : Sélectionner tout - Visualiser dans une fenêtre à part ErrorDocument 404 http://localhost/xml_template_mvc/error404
P.S : Je m'excuse pour les accents je suis sur un qwerty.
Partager