Quand, pour une raison ou pour une autre, on ne peut pas user des facilités d'Apache et de son fichier .htaccess, on peut contourner le probléme d'URL-rewriting grâce à PHP. Une solution, certes peu puriste, mais simplissime à mettre en oeuvre et neutre par rapport au script. L'idée, pour rendre une URL plus explicite, est de passer de l'URL re-writing à l'URL adding (pour ajouter).
En somme au lieu de remplacer dans l'URL de l'abstrait par du concret, on ajoute du concret à l'abstrait existant. Ce qui ne mange pas de pain, comme dit la concierge du 3,bis rue de Berry à Paris, adepte du Javascript en déshabillé, et surtout du trampoline en tenue de combat.
Soit votre URL
http://monsite/wp/?p=3260
Laquelle doit pointer sur un contenu de votre site qui comprendra dans le cas le plus général ,au moins un titre et un texte illustré ou non.
On va s'intéresser au titre -de facto l'élément le plus signifiant - qu'on récupère dans la base de données et qu'on affecte à une variable factice $t.
Par exemple on suppose que le titre de l'article 3260 est "Trois orfévres à la Saint-Eloi montèrent sur le toît".
Cela donne :
$t="Trois orfévres à la Saint-Loi montèrent sur le toît";
On traite la chaine de caractéres de $t pour l'adapter à l'URL
Par exemple :
// On récupère au préalable $t dans $chaine et on remplace au passage les espaces par des tirets
$chaine=str_replace(" ","-",$t);
// Tableau des caractères accentués et signes spéciaux
$c[0]=array("Á","Â","Ä","à","á","â","ä","@","È","É","Ê"
,"Ë","è","é","ê","ë","€","Ì","Í","Î","Ï","ì","í","î","ï"
,"Ò","Ó","Ô","ö","ò","ó","ô","ö","Ù","Ú","Û","Ü","ù","ú","û","ü","µ","Œ","œ","$","£");
// Tableau des caractères de substitution correspondants
$c[1]=array("a","a","a","a","a","a","a","-","e","e","e","e","e","e","e","e",
"euros","i","i","i","i","i","i","i","i","o","o","o","o","o","o","o","o","u","u","u","u","u","u","u","u","mu","oe","oe","s","l");
// Traitement de la chaine
for($i=0;$i<count($c[0]);$i++){
$chaine=str_replace($c[0][$i],$c[1][$i],$chaine);
}
La valeur de $chaine devrait être à présent :
Trois-orfevres-a-la-Saint-Eloi-monterent-sur-le-toit
On peut à présent écrire le lien sur la page 3260 de cette manière :
echo "<a href=\"http:monsite/com/?wp/p=3260&t=".$chaine."\">".$titre."</a>";
ou si on n'a pas ouvert le <?php
<a href="http/monsite.com/wp/p=3260&t=<?php echo $chaine; ?>">
<?php echo $titre; ?>
</a>
Aspect du lien sur le site :
Trois orfévres à la Saint-Eloi montèrent sur le toît
Barre d'adresse :
http://monsite.com/wp/p=3260&t=Trois-orfevres-a-la-Saint-Loi-monterent-sur-le-toit
Le robot de recherche pourra ainsi avoir son content d'URL signifiante toute fraiche.
Si la forme de l'URL de départ le permet on peut aussi réunir les variables de l'URL en une seule, $pt par exemple. Ce qui donne...
echo <"a href=\"http://monsite.com/page.php?pt=3260/".$chaine."\">".$titre."</a>
URL dans la barre d'adresse :
http://site.com/page.php?pt=3260/Trois-orfevres-a-la-Saint-Loi-monterent-sur-le-toit
Récupération des variables dans le script :
if(empty($_GET["pt"]))$_GET["pt"]="";
$pt=explode("/",$_GET["pt);
$p=$pt[0];
$t=$pt[1];
On peut même en bout d'URL et si on a le goût du secret rajouter.html, .htm ou .moije; car qu'importe le flacon pourvu qu'on ait l'ivresse.
En espérant ne avoir été trop long et que celà pourra vous être utile.
<:sb:>
Modifié par skyblue (08 Feb 2021 - 15:50)