[.htaccess] urlrewriting + router php = redirection
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:
Code:
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()
} |
La vue de la page 404:
Code:
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> |
Le .htaccess:
Code:
1 2 3 4 5 6
|
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([_a-z0-9]*)$ index.php?$1 [L]
ErrorDocument 404 /index.php?error404 |
Si je remplace par ceci:
Code:
ErrorDocument 404 http://localhost/xml_template_mvc/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!
P.S : Je m'excuse pour les accents je suis sur un qwerty.