Problème redirection si c'est une mauvaise ur
okuni Messages postés 1325 Statut Membre -
Je m'adresse à vous car j'ai un petit soucis ! Avec mon code php et l'url rewriting !
Alors voilà : J'ai fais des url comme ça : news-le-titre-de-la-news-1.html mais si je tape news-le-tietr-de-la-news-1.html C'est pareil alors j'ai trouvé un code que j'ai adapter a mon site :
<?php
$id_news = $_GET['id_news'];
$news = mysql_query("SELECT * FROM CMS_news WHERE id = '".$id_news."'")or die(mysql_error());
$news1 = mysql_fetch_assoc($news);
if($news1["url"]!=$_GET["url"]){
header("location: ./news-".$news1["url"]."-".$news1["id"].".html");
}
?>
Mais ça ne redirige pas si c'est pas la bonne url o_O
J'implore votre aide.
Cordialement,
Alexandre
9 réponses
Un souci lié à PHP et à l’URL rewriting produit une redirection inexacte lorsque l’URL saisie diffère légèrement du slug prévu et empêche d’atteindre la version canonique attendue. Le mécanisme récupère l’identifiant via GET, interroge la base pour obtenir l’URL associée, compare cette valeur à celle fournie et, en cas d’écart, tente d’envoyer une redirection vers la page canonique. Des réponses suggèrent d’ajouter des affichages de débogage pour vérifier les valeurs des variables, de sécuriser l’entrée en convertissant l’id en entier et de tester si le header(Location) est réellement déclenché. En cas d’échec, l’analyse propose d’éclaircir le comportement avec des sorties conditionnelles et d’examiner les éventuels aléas comme le chemin relatif, l’existence des guillemets et les espaces autour des paramètres.
-
fait des echo pour voir les valeurs des 2 varaibles.
une question, comment fait tu pour différencier news, le-titre-de-la-news et 1 ?
puisque c'est le - qui sépare tout. Tu utilise quoi comme regex ?-
-
Par exemple comme ceci :
<?php
$id_news = $_GET['id_news'];
$news = mysql_query("SELECT * FROM CMS_news WHERE id = '".$id_news."'")or die(mysql_error());
$news1 = mysql_fetch_assoc($news);
echo '$news1["url"] : '.$news1["url"].'<br/>';
echo '$_GET["url"] : '.$_GET["url"].'<br/>';
if($news1["url"]!=$_GET["url"]){
header("location: ./news-".$news1["url"]."-".$news1["id"].".html");
}
?>
tu verras tous de suite quels sont les valeurs de tes variables. -
-
-
-
-
Si tu ne réponds pas à mes questions, j'aurai encore plus dur à t'aider ;)
quand tu dis "Sinon rien" à ton message précédent, ça veux dire quoi ?
Je suppose que si je tape cette adresse dans la barre d'adresse cela fonctionne ?
news-microsoft-rend-office-gratuit-sur-internet -1.html
le ./ devant ton adresse dans le Location, c'est indispensable ? -
effectivement c'est bizarre.
essaye ceci :if($news1["url"]!=$_GET["url"]){ echo 'Redirection'; } else{ echo 'Pas de redirection'; }
si les url sont différents, il affichera Redirection. Si c'est le cas, c'est ton header Location qui déconne. sinon, il y a un soucis ^^" -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Il y a bien une redirection mais l'adresse ne change pas !
Je m'explique : Je vais sur le page (bonne url ) j'enlève une lettre je charge la page puis elle se recharge mais ne change pas la lettre manquante :'(
On y est presque !
mdr -
Tu peux le faire avec htaccess.
Lien : https://www.grafikart.fr/tutoriels/url-rewriting-71 ( C'est vers la fin de la video ! ) -
Dejà regarder c'est avec ça que j'ai trouvé le bout de code !
Mais ce bout de code na marche pas ! :/
Merci quand même ;) -
La concaténation marche si c'est entre <?php // ici ?> !?