Accéder au contenu principal

[htaccess]Principe de base de la réécriture d'url

Quand on commence à s'intéresser au référencement et qu'on fait des sites dynamiques, on trouve vite des forums et des sites traitant du .htaccess et de la réécriture d'url. Souvent, le principe de base n'est pas très clairement expliqué et beaucoup se trompent de direction. Ce petit billet a pour but de décrire le processus de base du fonctionnement de la réécriture d'url grâce à ce petit fichier.

Que me faut-il pour commencer ?

  1. Il faut se demander si cela vaut le coup pour le site en question. Si vous avez décidé de faire un blog pour tenir vos amis et vos parents au courant de ce que vous faites, il y a peu de chance que cela intéresse quelqu'un d'autre et que vous soyez référencé dans les moteurs de recherche. Dans ce cas, il importe peu que vos url soient à rallonge.
  2. Il est important de savoir si votre hébergeur accepte l'url rewritting. La plupart des grands hébergeurs l'acceptent et un bon nombre des hébergeurs gratuits s'y mettent aussi. Cependant, si vous pensez vraiment avoir un produit qui mérite qu'on se penche sur la réécriture d'url et que vous êtes toujours hébergé chez free, je dirais qu'il y a comme un problème. La fiabilité des hébergeurs gratuits n'est pas toujours au rendez-vous.
  3. Il est également nécessaire d'avoir un peu de logique et pour le cas un serveur apache car je ne connais pas bien le fonctionnement d'IIS et je ne prendrais pas le risque de raconter n'importe quoi.

Comment ça fonctionne l'url revritin ?

La première erreur à ne pas faire est de considérer que ça va permettre de réécrire les url du côté client. Cela ne va pas changer un lien qui pointe vers test.html en test1.html dans le navigateur de l'internaute (cela est permis grâce au redirect). Cela permet de dire à votre serveur que test.html doit être considéré comme page.php?id=test (par exemple). Dans cet exemple, page.php peut gérer plusieurs pages du site mais ce que verra l'internaute dépendra de la page demandée. Dans la configuration actuelle des moteurs de recherche, cela a peu d'intérêt puisqu'ils sont capables de reconnaitre les variables qui sont passées par url et de les indexer.

Quand dois-je l'utiliser alors ?

Le cas le plus propice pour l'utilisation de l'url rewritting est dans un catalogues de produits ou dans un site d'information. Dans le premier cas, tous les produits auront le même gabarit de fiche et les informations différeront d'un produit à l'autre. De plus, cela permet de classifier les produits par type.
ex : http://www.exemple.com/produit.php?art=1&type=2 peut être écrit dans votre code html comme <a href="http://www.exemple.com/2-salle-de-bain/1-pommeau-de-douche">pommeau de douche</a>
Il faut formater les urls de telle manière qu'elles soient reconnaissables. Le contenu du fichier htaccess dans ce cas sera :
RewriteEngine On   
RewriteBase /
RewriteRule ^([0-9]+)-(.*)/([0-9]+)-(.*)$ produit.php?art=$3&type=$1 [L,QSA]
([0-9]+) représente un ou plusieurs chiffres
(.*) représente plusieurs caractères de n'importe quelle nature
Dans la seconde partie, on récupère les données capturées dans la première partie $3 correspond à la troisième parenthèse et $1 à la première. Une fois que vous avez compris ça, ce n'est pas les sources qui manquent.

Pour aller plus loin : vous pouvez regarder ce que sont les expressions régulières, les techniques avancées de la réécriture d'url, la partie consacrée à ce thème sur le forum de webrankinfo et de nombreuses autres ressources...

Commentaires

Posts les plus consultés de ce blog

[PHP] Faire un petit MVC avec des routes

Pour bon nombre de petits projets, il n'est pas nécessaire de taper dans les frameworks MVC comme Zend ou Symphony qui sont très lourds et un petit truc maison doit suffire. Je vais essayer de donner quelques tuyaux pour pouvoir faire son MVC maison avec des routes qui dirigent vers les contrôleurs et les actions.
Tout d'abord, il faut créer un fichier index.php à la racine de votre site qui va contenir le lien vers tout ce dont vous avez besoin pour faire vos routes. Ensuite, vous devez créer un dossier controlleur (si vous voulez reproduire la faute de frappe de l'exemple) dans lequel vous aurez tous vos contrôleurs. Vous pouvez éventuellement diviser ce dossier en plusieurs dossiers distincts qui contiendront les différentes parties de votre site. Veillez à appeler vos classes en rapport avec vos règles de is_callable. Dans mon exemple, le chemin vers le dossier est en minuscule et la première lettre du fichier est en majuscule. Par exemple : la classe /controlleur/fro…

[Magento 2]Le système de cache

A la lecture de l'article d'Alan Kent sur le système de cache de Magento 2, on ne peut que se réjouir d'une vraie prise de conscience du problème qui avait été déjà pris en compte avec la mise en place des modules Redis de Colin Mollenhour dans Magento 1.8 qui avait permis d'améliorer considérablement les performances sur des Magento à moyen et gros volumes. J'avais pris l'initiative de mettre en place ces deux modules (Session et Backend) sur des 1.7 au grand soulagement des clients qui ont vu les temps de réponses s'améliorer avec un temps de chargement parfois divisé par trois.
Pour la future version de Magento, le système de cache se basera a priori sur un cache de page complète du type Varnish avec un chargement en Ajax pour les parties de la pages qui sont spécifiques à l'utilisateur. On pense notamment au récapitulatif du panier, aux liens vers les différentes parties du compte... En s'appuyant tout de même sur le cache du navigateur pour cac…

Ajouter un administrateur à Magento 1 en SQL

On vous balance sur un projet, vous devez récupérer la base de données et travailler dessus dans votre environnement de développement. Le problème est que vous n'avez pas d'accès à l'administration car vous n'avez pas d'utilisateur créé en production ou en staging. Ce n'est pas une fatalité !

Il est possible de créer facilement un utilisateur qui aura les rôles suffisants dans Magento avec seulement un accès à la base de données. Pour faire cela, il faut comprendre que les administrateurs sont inscrits dans une table et leur rôle dans une autre. Dans le script suivant, on créera un administrateur avec les pleins pouvoirs mais vous pouvez adapter ce script à vos besoin en jetant un oeil à la table admin_role et en modifiant parent_id dans le script. La colonne parent_id définit le parent du rôle en question pour l'utilisateur. Si vous voulez créer un utilisateur avec des pouvoirs différents, regardez le rôle qui correspond au pouvoir que vous accorder et mo…