Tutorial - Optimisez votre référencement grâce à la réecriture d'URL et gérez les erreurs de manière plus facile
Il existe aujourd'hui plusieurs critères pris en compte par les moteurs de recherche.
Parmi les plus importants, il y a le titre de la page, sa description meta et de plus en plus son URL.
Grâce à l'URL Rewriting, le webmaster peut changer une URL de type www.site.com/index.php?page=blog en www.site.com/blog.
Les moteurs ne prennent pas en compte ces paramètres (?param1=1¶m2=2¶m3=3...) s'ils sont trop nombreux.
D'un point de vue utilisateur, le cheminement à l'intérieur du site est plus clair et plus agréable.
En effet, il voit la correspondance avec des pseudo-répertoires comme ceux qu'ils peut voir quand il parcourt son disque dur.
Pour effectuer cette réecriture, on peut passer par un .htaccess et des expressions régulières qui sont, pour des débutants, difficiles à mettre en place.
Pour Pixtiz, j'ai voulu faire un site multi-langue, donc je devais récupérer les paramètres de l'URL pour les transformer en variable PHP.
Dans ce but, j'ai mis en place une technique utilisée par le webmaster d'Acoustik.fr, site d'
actu musicale.
Pour ce tutorial, des connaissances de base en PHP sont indispensables.
Pour utiliser cette technique, il faut que toutes vos pages soit redirigées vers une même page.
Pour effectuer cette opération, suivez ce tutoriel qui explique comment
rediriger toutes ses pages vers une page unique.
Il ne sera d'ailleurs peut être pas possible pour vous d'implanter cette technique, suivant comment votre site est construit.
Le mieux est de penser son site de cette manière à sa conception, l'ajout de page et la maintenance sont ainsi simplifiées.
Récupérer et découper l'URL en PHP
Cette portion de code est la première à écrire dans votre index.php
session_start();
$url = $_SERVER['REQUEST_URI'];
$tab_url = explode ("/",$url);
$param_url1 = $tab_url[1];
$param_url2 = $tab_url[2];
$param_url3 = $tab_url[3];
$param_url4 = $tab_url[4];
On démarre la session grâce au session_start();. Cela permettra de garder des variables en "mémoire" comme la langue utilisée ou le nom d'utilisateur.
$_SERVER['REQUEST_URI']; est une variable d'environnement PHP, elle permet de récupérer l'adresse de la page.
On explode ensuite cette adresse dans un tableau, ici $tab_url.
Par exemple, pour la page http://www.pixtiz.com/fr/blog/web/htaccess-rediriger-pages-vers-unique-1and1.php, on aura :
- $tab_url[1] = fr
- $tab_url[2] = blog
- $tab_url[3] = web
- $tab_url[4] = htaccess-rediriger-pages-vers-unique-1and1.php
On stocke ensuite ces informations dans des variables PHP ($param_urlX) pour les retrouver facilement.
Gérer la langue d'un site multi-langue
switch($param_url1){
case "fr":
$_SESSION["ch_langue"] = "fr";
break;
case "en":
$_SESSION["ch_langue"] = "en";
break;
case "it":
$_SESSION["ch_langue"] = "it";
break;
case "nl":
$_SESSION["ch_langue"] = "nl";
break;
default:
$_SESSION["ch_langue"]="fr";
header("HTTP/1.0 404 Not Found");
$page='./404.php';
break;
}
Grâce à un switch, on change la variable de session "ch_langue" qui représente la langue.
On pourra ensuite changer la page à inclure suivant cette variable.
Il est important de regarder le cas du default:, ce cas arrive quand la langue indiquée dans l'URL n'est pas prévue par les case.
C'est ici le cas où l'utilisateur s'est trompé, il faut donc renvoyer une page d'erreur ($page='./404.php';).
La fonction header ( header("HTTP/1.0 404 Not Found"); ) permet de renvoyer une header 404.
En effet, sinon, le header renvoyé est toujours un header 200 (OK).
Cela peut provoquer des bugs avec des outils comme Google SiteMaps qui va vous donner des erreurs car il faut qu'il trouve au moins une page renvoyant un 404.
L'erreur générée stipule "Nous avons constaté que votre serveur renvoyait l'état 200 (trouvées) pour des pages qui n'existent pas." et peut être contournée en renvoyant ce header 404.
Changer la page à afficher en fonction de l'URL
if(isset($param_url2)){
switch($param_url2){
case "jeux-flash":
$page='./jouer_fr.php';
break;
case "flash-games":
$page='./jouer_en.php';
break;
...
...
default:
$page='./presentation.php';
break;
}
}else {
header("HTTP/1.0 404 Not Found");
$page='./404.php';
}
On vérifie d'abord qu'il y a un paramètre c'est à dire que l'adresse est du type http://www.site.com/XX/xxx.
Ensuite, on fait un switch sur cette valeur et on assigne la variable page à la page correspondante.
La variable $page doit contenir la page qui va être affichée dans l'emplacement principal du site.
La valeur en default: permet d'afficher une page même s'il y a eu une erreur dans l'url tapée.
Elle permet par exemple de ramener l'utilisateur vers la page de presentation du site afin de ne pas le perdre.
Si aucune page n'est indiquée, on renvoie un header 404 comme precedemment.
Affichage de la page PHP sélectionnée
<div id="page_princ">
include (''.$page.'');
</div>
L'affichage de la page se fait par un simple include() PHP. Cette page sera affichée dans le bloc "page_princ".
Puisque l'on a choisit une page que existe et non pas directement la page indique en $_GET, on évite certaines techniques de hacking.
Le code PHP de l'index est donc très simple puisqu'il ne fait que choisir la page à inclure.
Le positionnement est fait en CSS, pas besoin d'adapter pour chaque page.
Sur Pixtiz, l'affichage est fait de cette manière :
Pour tout problème dans votre implantation, vous pouvez laisser un commentaire sur cet article.