8309 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Un de mes sites (installation WordPress) est installé sur un serveur NGINX. La réécriture des url ne fonctionne donc pas via un .htaccess. Je n'ai pas la possibilité de toucher à la configuration du serveur (de toute manière je ne connais pas du tout NGINX). J'ai l'impression que la réécriture dans ces conditions ne sera pas possible...
Peut-être connaissez-vous une autre méthode pour réécrire les url ?
Merci d'avance Smiley smile
Modérateur
Bonjour,
Ah ben c'est dommage ! Va falloir que je m'intéresse à NGINX alors. Je n'ai pas la main sur la configuration serveur, donc je pense que cela ne sera pas possible...
Il me semblait pourtant déjà avoir vu une méthode basée sur php... Tant pis !
Hello,
S'agit t'il d'opérer des redirections ou simplement d'avoir des URL plus causantes dans la barre d'adresse des navigateurs ? Merci.

-:sb:-
Modifié par skyblue (06 Feb 2021 - 19:43)
Modérateur
Eh bien, il faudrait les deux évidemment. Mais si cela se résumait déjà par de "jolies url", ça m'irait bien Smiley cligne
C'est à moi de dire merci Smiley cligne
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)
Modérateur
Bonsoir.

Merci beaucoup pour cette longue explication. Désolé pour le délai de réponse...
Le problème est que je n'ai pas forcément la main sur la génération des url puisque c'est WordPress qui s'en charge. Mais je retiens la technique pour une prochaine fois peut-être !
Bonne continuation et merci à nouveau.
Modifié par jojaba (23 Feb 2021 - 18:29)