Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Url Rewriting et référencement naturel
Dans cette
formation Php, nous proposons d'achever les travaux réalisés lors des formations précédentes. La problématique est cruciale. Elle concerne le
référencement naturel. Il s'agit d'un enjeu de taille pour tout site Web désireux de développer un fort trafic.
Dans le dernier volet de ces formations, nous avions construit dynamiquement le contenu d'une page Web, en fonction d'un paramètre passé dans l'URL. Cette valeur n'est autre que la
clé primaire de l'enregistrement cliqué depuis la page d'extraction. Ce procédé est fort intéressant dans la mesure où il permet de créer une infinité de rubriques, à partir d'une seule page Html. Mais comme nous l'avions évoqué, il n'est pas pleinement satisfaisant. La forme de ces Url est pénalisante en termes de
référencement. Elles sont toutes quasiment identiques. Seule la valeur du paramètre change. C'est pourquoi, nous devons mettre en oeuvre la technique de l'
URL Rewriting pour créer des adresses pertinentes, intelligibles et explicitement différentes, pour chaque page appelée.
Tout ce que nous avons développé jusqu'alors reste vrai. Nos travaux consistent simplement à réaliser des adaptations, pour produire ces adresses uniques bénéfiques au
référencement naturel.
Sources et présentation de la problématique
Nous devons commencer par récupérer les travaux bâtis au cours des formations précédentes.
La décompression fournit de nombreux fichiers à la racine et des ressources externes dans les sous dossiers. Le
fichier index.php correspond à la page Web d'accueil proposant les listes déroulantes reliées entre elles. Le
fichier reponse.php renferme le code externalisé pour le
traitement Ajax, afin de produire les résultats sans recharger la page initiale. Comme c'est elle qui restitue les enregistrements, c'est à partir de cette page que nous devons initier nos travaux. Le
fichier fiche.php correspond à la page Web dont le contenu doit s'enrichir dynamiquement, en fonction du paramètre qui lui est passé dans l'URL. Et c'est précisément cette
Url que nous souhaitons réécrire pour les besoins du
référencement naturel. Enfin, vous notez la présence d'un fichier précieux nommé :
.htaccess. Il s'agit d'un fichier d'initialisation et de paramétrage pour le serveur. C'est lui qui va notamment lui indiquer comment réagir par rapport à la signature de certaines Url.
- Lancer EasyPhp,
- Démarrer les deux serveurs (http et Database),
- Cliquer alors sur le bouton Open du module MySql Administration,
Si vous avez suivi les formations précédentes, dans le volet de gauche, vous devez noter la présence de la
base de données ids. Cette dernière doit proposer une table nommée
liste_id.
Dans la formation précédente, nous avions importé la nouvelle structure de cette table pour intégrer le
champ liste_descriptif. C'est lui qui fournit l'essentiel du détail permettant d'enrichir la page Web dynamique, selon le numéro de l'enregistrement cliqué.
Pour que le
code Php puisse accéder à ces informations, un compte utilisateur doit être créé avec les droits administrateurs :
- Nom d'utilisateur : codePHP,
- Mot de passe : php123bd,
- Nom d'hôte : Adresse locale, ici : 127.0.0.1,
Comme vous le savez, ce projet doit être référencé dans l'
interface d'EasyPhp. Un nom doit lui être attribué comme
url-rewriting par exemple. De même, l'adresse issue de l'explorateur Windows doit être désignée pour définir son emplacement. Dès lors, l'application apparaît listée dans les sites émulés par
EasyPhp.
- Cliquer sur son lien pour accéder à sa page d'accueil,
Si aucune erreur n'est à déplorer, cela signifie que vous avez correctement configuré le compte utilisateur.
- Déployer la liste déroulante qui se propose,
- Choisir un département : 83-Var par exemple,
Une seconde liste déroulante apparaît instantanément. Il s'agit de la liste des villes liées qui se construit automatiquement en fonction du choix émis dans la première liste.
- Choisir une ville : Toulon par exemple,
Tous les enregistrements concordants, soit toutes les idées de sorties situées dans la ville de Toulon pour le département du Var, sont aussitôt extraites. Aucun rechargement de la page n'a eu lieu grâce aux
technologies Ajax. De même, vous constatez la présence d'une petite barre de navigation en dessous des résultats. Ce
système de pagination propose à l'internaute de parcourir toutes les informations restituées, page à page.
- Cliquer sur l'un des enregistrements, par exemple l'idée de sortie : La Corniche ***,
Nous sommes aussitôt redirigés sur la fiche de l'hôtel. Il s'agit de la
page Web fiche.php dont le contenu s'enrichit en fonction du numéro de l'enregistrement cliqué, passé dans l'URL. Ici, ce numéro de
clé primaire est le 888. C'est lui qui identifie de façon unique dans la base de données, l'enregistrement ainsi désigné. Mais pour les besoins du
référencement, nous devons proposer une URL possédant la forme suivante :
idee-la-corniche-toulon-888.html. Cette adresse est plus claire, unique et descriptive. Elle continue de porter le numéro de la
clé primaire, essentiel au
code Php de la
page fiche.php pour adapter son contenu.
- Revenir sur la page d'accueil en cliquant sur l'icône située à gauche dans le bandeau supérieur,
Traitement de chaines de textes
Une Url ne doit comporter ni espaces, ni accents, ni caractères spéciaux. C'est pourquoi, avant sa construction, nous devons retravailler la désignation de l'idée de sortie.
- A la racine du dossier de décompression, double cliquer sur le sous dossier fonctions pour l'ouvrir,
- Puis, cliquer droit sur le fichier traitement_chaine.php,
- Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++,
Comme vous le constatez, ce
fichier Php propose deux fonctions nommées respectivement
supprAccents et
supprSpeciaux. La première, comme son nom l'indique, remplace tous les accents par leurs homologues sans accents. La seconde remplace les caractères spéciaux recensés, par un tiret. D'ailleurs il conviendrait d'ajouter le symbole de l'étoile dans l'énumération, comme suit :
...
function supprSpeciaux($string){
$string = strtr($string, "'@\"\\/#,()*", "-----------");
$string = str_replace("--","-",$string);
return $string; }
...
Comme nous ajoutons un caractère spécial à remplacer en deuxième argument de cette fonction, nous devons ajouter un tiret de remplacement en troisième argument.
- A la racine du dossier de décompression, cliquer droit sur le fichier reponse.php,
- Dans le menu contextuel, choisir de l'ouvrir avec le Notepad,
Nous y retrouvons le
code Php externalisé permettant notamment de restituer les données selon les choix recoupés. En début de code, vous notez la présence de la chaîne de connexion.
...
$liaison2 = mysqli_connect("127.0.0.1", "codePHP", "php123bd");
mysqli_select_db($liaison2, "ids");
...
Elle rappelle les identifiants nécessaires pour la création du compte utilisateur dans PhpMyAdmin. La
boucle while parcourt tous les enregistrements pour restituer les idées de sorties dans la page Web.
...
while($retour = mysqli_fetch_array($retours))
{
$chaine .= "<div style='float:left; width:190px; margin-left:10px; font-size:12px; text-align:left;'><a href='fiche.php?ID=".$retour["liste_num"]."' style='text-decoration:none; color:#666666;'>".utf8_encode(str_replace("#", "'", $retour["liste_nom"]))."</a></div><div style='float:left; width:130px; font-size:10px; text-align:left;'>".utf8_encode(str_replace("#", "'", $retour["liste_activite"]))."</div><br/>";
}
...
A ce titre, vous remarquez la présence du lien cliquable appelant la
page fiche.php en lui passant en paramètre le numéro de l'enregistrement. C'est la partie dynamique située dans l'
attribut href de ce lien que nous devons modifier. Mais avant cela, nous devons retravailler la désignation de l'idée de sortie, pour créer une
url conforme. Nous avons besoin des deux fonctions consultées précédemment. Ce fichier externe doit être ajouté dans la construction.
- Pour cela, adapter le code Php, selon les indications mentionnées en gras :
...
$depart = ($depart-1)*10;
$requete = "SELECT liste_num, liste_nom, liste_activite, liste_ville FROM liste_id WHERE liste_dep='".utf8_decode($le_dep)."' AND liste_ville='".utf8_decode($la_ville)."' ORDER BY liste_nom LIMIT ".$depart.",10;";
$retours = mysqli_query($liaison2, $requete);
$chaine = ""; $url = "";
include("fonctions/traitement_chaine.php");
while($retour = mysqli_fetch_array($retours))
{
$url ="idee-".supprAccents( supprSpeciaux( strtolower( $retour["liste_nom"]."-".$retour["liste_ville"]))). "-" .$retour["liste_num"].".html";
$chaine .= "<div style='float:left; width:190px; margin-left:10px; font-size:12px; text-align:left;'><a href='".$url."' style='text-decoration:none; color:#666666;'>".utf8_encode(str_replace("#", "'", $retour["liste_nom"]))."</a></div><div style='float:left; width:130px; font-size:10px; text-align:left;'>".utf8_encode(str_replace("#", "'", $retour["liste_activite"]))."</div><br/>";
}
$chaine.= "<div style='float:left; width:320px; margin-right:10px; font-size:12px; text-align:right;'>";
...
Tout d'abord, dans l'énumération des champs de la
requête SQL, nous ajoutons le
champ liste_ville. Nous avons besoin de récupérer son information pour la construction de l'Url. Puis, nous déclarons la
variable $url. Grâce à l'
instruction include, nous ajoutons la référence au fichier : traitement_chaine.php. Désormais, nous pouvons donc appeler et exploiter ses deux fonctions par leurs noms. Ensuite, nous construisons l'
Url dynamique de chaque enregistrement, à chaque passage dans la boucle. Nous la préfixons du terme statique
idee. Nous l'assemblons avec le nom de l'idée de sortie suivi de sa ville, tous deux séparés d'un tiret. Nous prenons soin de les imbriquer dans un traitement en cascade. Nous supprimons les accents, remplaçons les caractères spéciaux et convertissons la chaîne en minuscules grâce à la
fonction Php strtolower. Après un tiret supplémentaire, nous n'oublions pas d'assembler le tout avec le numéro de l'enregistrement ($retour["liste_num"]). Enfin, nous exploitons cette
url dynamique dans l'
attribut href de la balise Html matérialisant ce lien.
Il est temps de tester les résultats engendrés par ces adaptations.
- Enregistrer les modifications et basculer sur le navigateur Web,
- Recharger la page d'accueil en validant sa barre d'adresse,
- Choisir un département avec la première liste déroulante, par exemple : 26-Drome,
- Choisir une ville avec la seconde liste déroulante, par exemple : Valence,
- Puis, cliquer sur le lien de l'enregistrement : Golf des Chanalets par exemple,
Bien que l'Url soit parfaitement construite et conforme, la redirection conduit vers une page d'erreur. Et pour cause, cette adresse désignée par l'url n'existe pas. Cette page n'a jamais été conçue. Mais rassurez-vous, l'essentiel du travail est cependant exécuté.
URL Rewriting en Php
Les adresses que nous avons construites dynamiquement sont des signatures. En d'autres termes, elles proposent toutes la même forme. Elles débutent par le terme
idee. Elles se poursuivent par une succession de lettres de l'alphabet, sur un nombre indéfini. Puis, elles se terminent par un numéro suivi de l'extension de la page. Ce sont les
expressions régulières qui permettent de déceler des séquences bien précises dans des chaînes de caractères. Nous avions d'ailleurs démontré l'intérêt de ces
expressions régulières en VBA Excel, mais aussi avec
Javascript.
Nous devons les exploiter dans ce fameux
fichier .htaccess. Elles indiqueront au
serveur http que toutes les adresses de la forme que nous avons construite, doivent être redirigées vers la
page unique fiche.php.
- A la racine du dossier de décompression, cliquer droit sur le fichier .htaccess,
- Dans le menu contextuel, choisir de l'ouvrir avec le Notepad,
Deux instructions sont déjà présentes :
RewriteEngine on
ErrorDocument 404 /index.php
La première ligne permet d'activer le
module de réécriture d'Url. La dernière indique au serveur comment se comporter en cas d'erreur 404. Une
erreur 404 correspond à une page non trouvée. Ici, le serveur doit rediriger la requête vers la page d'accueil index.php. Il est important de comprendre qu'un
fichier .htaccess est essentiel pour tout site Web. C'est lui qui déterminera les comportements prédominants du serveur sur des demandes particulières. Et précisément, nous devons rediriger nos url vers la page fiche.php.
- Entre ces deux instructions, ajouter la ligne suivante :
RewriteRule ^idee-([a-z-]+)[-]([0-9]+).html fiche.php?ID=$2
L'instruction
RewriteRule annonce la
règle de réécriture que doit suivre le serveur. Le symbole de l'accent circonflexe indique que nous faisons référence à la racine du site, peu importe ce qui précède. Puis, nous décrivons la signature des url à intercepter. Elles commencent par le terme idee suivi d'un tiret. Puis, vient une succession de lettres de l'alphabet et de tirets. Toute lettre de l'alphabet est autorisée, de a jusqu'à z (a-z). Cette règle est mentionnée entre crochets, selon la syntaxe des
expressions régulières. Leur nombre est variable et donc indéfini, d'où la présence du
symbole + après les crochets. Le tout est inscrit entre parenthèses pour définir explicitement cette séquence. Elle est nécessairement suivie d'un tiret, mentionné entre crochets. Lui-même doit être suivi d'un numéro. Ce nombre est composé de n'importe quel chiffre variant de 0 à 9 (0-9). Et ces chiffres peuvent se répéter un nombre de fois indéfini. Par exemple, il peut s'agir d'une clé primaire de la forme :
499. C'est pourquoi le
symbole + emboîte le pas de cette expression, juste après les crochets. Cette seconde séquence est explicitement inscrite entre parenthèses. C'est ainsi que nous pourrons faire la correspondance. Nous terminons l'expression avec le suffixe statique
.html. Enfin, nous indiquons que lorsque cette forme d'Url est trouvée, la redirection doit être opérée vers la page fiche.php, avec un paramètre qui fait référence à la seconde séquence définie entre parenthèses (ID=$2). Il s'agit bien sûr du numéro de la clé primaire, encodé dans l'expression régulière.
- Enregistrer les modifications et basculer sur le navigateur Web,
- Revenir sur la page d'accueil,
- Choisir le département de l'Ardèche et la ville d'Aubenas par exemple,
- Avec la petite barre de navigation, atteindre la page 2 des résultats,
- Puis, cliquer sur l'idée : Restaurant du château,
Comme vous le constatez, l'Url est parfaitement construite, unique et surtout fonctionnelle. Elle redirige vers la
page fiche.php qui récupère le numéro passé en paramètre. Cette réécriture dont les enjeux sont cruciaux, a été rendue possible grâce à une
expression régulière pour définir une règle dans le
fichier htaccess.
Chaque enregistrement propose désormais sa propre Url. En conséquence chaque idée de sortie peut être référencée indépendamment, explicitement et qualitativement. Nous pourrions même nous débarrasser de l'extension de l'adresse (.html). Pour cela, nous devons la supprimer dans la construction du
code Php et dans celle de l'
expression régulière.
Dans une prochaine formation, nous aborderons des notions de sécurité quant à ces
réécritures, pour ne pas risquer le
Duplicate Content, très mal vu par les
robots d'indexation.