Url rewriting et 404

gabbermaniac Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -  
gabbermaniac Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je rencontre un problème de redirection lorsque je change l'id de l'url.
Si je met une id valide (présent dans ma bdd)cela affiche bien la page avec le bon contenu, or si je met une id invalide (qui n'existe pas dans ma bdd) cela m'affiche une page avec écrit: Not Found
The requested URL /playmocity/theme/- was not found on this server.

Ma règle rewrite:
RewriteRule theme/([a-zA-Z0-9\-]+)-([0-9]+) index.php?p=theme/article&url=$1&id=$2

Mon code est le suivant dans la page article
	$id=$_GET["id"];
	$sql="SELECT * FROM theme WHERE id=$id";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
	$data=mysql_fetch_assoc($req);
	if($data["url"]!=$_GET["url"]){
		header("location:/playmocity/theme/".$data["url"]."-".$data["id"]);
	}



Est-ce sur ce code qu'il faut opérer une redirection vers 404 ? où sur la page index.php à la racine du texte qui contient:
if(!isset($_GET["p"])&& preg_match("/^[a-z0-9]+$/i",$_GET['p'])){$_GET["p"]="index"; }
if(!file_exists("content/".$_GET["p"].".php")){ $_GET["p"]="404"; }


Merci à vous de m'aider.

2 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Je ne suis pas sûr d'avoir bien compris, alors je vais faire comme je pense.

Les vérifications sont à faire avant tout envoie de caractères (doctype, ...).
Ainsi, tu pourras renvoyer un code 404 via la fonction header() et faire un include de ta page d'erreur 404.
<?php
if(/* si la page n'est pas valide */) {
    header('HTTP/1.0 404 Not Found');
    include('404.php');
} else {
    
}
?>
0
gabbermaniac Messages postés 137 Date d'inscription   Statut Membre Dernière intervention   12
 
bonjour,

merci de ta réponse
le soucis est que ce code n'est vrai que pour une seule page (article.php) et cette page est de plus une include

donc je ne sais pas comment adapter le code dans ce cas la, j'ai essayer mais cela n'a pas fonctionner pour l"instant. ;)
0