Rewrite + gestion des erreurs 404,

WRInaute discret
Voilà j'utilise depuis longtemps le rewrite. Sans pb.
Mais je viens de m'apercevoir que la gestion des erreurs ne fonctionnait pas !

Mon fichier :
Code:
ErrorDocument 404 http://www.lejardindesophie.eu/page_introuvable.php


RewriteEngine on
RewriteRule ^(.+)\-1\-([^-]+)\-([^-]+)\.html$          /description.php?id=$2&lang=$3 [QSA,L]
RewriteRule ^(.+)\-2\-([^-]+)\-([^-]+)\.html$          /categories.php?lang=$2&param=$3 [QSA,L]
RewriteRule ^(.+)\-3\-([^-]+)\-([^-]+)\.html$          /list.php?lang=$2&param=$3 [QSA,L]
RewriteRule ^(.+)\-4\-([^-]+)\-([^-]+)\-([^-]+)\.html$ /description.php?id=$2&lang=$3&target=$4 [QSA,L]

Donc quand j'efface une page comme celle là :
http://www.lejardindesophie.eu/Peluche-figurine-sujet-personnage-3-1-6 ... le,0,.html

J'ai pas de redirection vers la page "page_introuvable.php" ?
Je ne comprend pas pourquoi ?

D'avance merci de vos lumières !
Sophie
 
WRInaute accro
Bonjour,

Que veux-tu dire par "j'efface une page" ? Tu supprimes des données dans la base ?

Tu n'as pas d'erreur 404, parce que ta réécriture transforme l'adresse que tu as indiquée en http://www.lejardindesophie.eu/list.php?lang=1&param=6,32,e,Article,0, et que list.php existe. Si tu as supprimé des données pour certaines valeurs d'une variable, tu dois gérer ça dans list.php qui doit alors générer lui-même un code 404.

Jean-Luc
 
WRInaute discret
oulala c'est flou pour moi ..
la page que j'ai en exemple c'est un article que j'ai supprimé.
mais qui est toujours indexé par google ..

donc ce dois être pour cela que j'ai pleins d'erreurs dans les tools de google ?
 
WRInaute passionné
dans tes scripts php tu dois détecter l'absence de données (surement une absence de résultat dans une requête à la données dans la BDD). Si pas de données tu peux mettre ce genre de code :
Code:
		header('Status: 404 Not Found', true, 404);
		include(dirname(__FILE__) . '/page_introuvable.php');
		exit;
L'include n'est pas indispensable mais ca permet d'afficher ta page d'erreur 404 personnalisée.

Sinon tu peux toujours optimiser en redirigeant vers la page la plus proche (objet proche, catégorie, ...). Tu peux te baser sur l'url et gérer une table de correspondance entre page supprimée et page proche. Une autre solution serait de ne pas supprimer physiquement dans ta base de données mais juste d'avoir un indicateur "supprimé". Dans ce deuxième cas, la catégorie de l'objet ou son descriptif permettent de trouver une page existante proche.
 
WRInaute discret
Bonjour,

Je constate exactement la problématique pour bon nombre de mes pages. Des suppressions de données sont effectuées automatiquement dans mes tables MySQL en fonction de la date du jour, mais les urls réécrites restent visibles dans mon navigateur.

Seul du contenu est absent, normal parce que la table est vide. Le plus embêtant, c'est que ces pages restent indexées par Google...

SI j'ai bien compris, je dois renvoyer une erreur 404 lorsque les données n'existent pas, ce qui désindexera l'url automatiquement.

Sur quelles bases partir en php dans mes pages pour renvoyer une erreur 404 si la variable est vide ?
 
Discussions similaires
Haut