Du bon ordre dans la réécriture d'URL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Du bon ordre dans la réécriture d'URL

Du bon ordre dans la réécriture d'URL

par Victor BRITO » 06 nov. 2006, 15:26

Salut à tous!

Lorsque vous voulez réécrire les URL de votre sitre dynamique afin d'améliorer le référencement de ce dernier, le fichier .htaccess est incontournable.

Le principe consiste à écrire dans le .htaccess, que vous placez à la racine du site, la structure de code que voici:

Code : Tout sélectionner

Options +FollowSymLinks RewriteEngine on RewriteRule #votre règle de réécriture d'URL sur une seule ligne
Parmi les URL à réécrire, il y en a qui comportent un ou plusieurs paramètres (récupérables avec $_GET['nom_du_paramètre']).

Soit les trois types d'URL suivants:

http://www.monsite.com/chemin-depuis-la ... ?param1=25
http://www.monsite.com/chemin-depuis-la ... ram2=titre
http://www.monsite.com/chemin-depuis-la ... aram3=edit

qui doivent être réécrites ainsi:

http://www.monsite.com/chemin-depuis-la ... age25.html
http://www.monsite.com/chemin-depuis-la ... titre.html
http://www.monsite.com/chemin-depuis-la ... -edit.html

Trois règles de réécriture doivent être, par conséquent, fournies au fichier .htaccess, que voici:

Code : Tout sélectionner

RewriteRule ^page([0-9]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1 [L] RewriteRule ^page([0-9]+)-([a-z]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1&param2=$2 [L] RewriteRule ^page([0-9]+)-([a-z]+)-([a-z]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1&param2=$2&param3=$3 [L]
Une question qu'on peut se demander: l'ordre d'apparition des règles de réécriture importe-t-il?

Eh bien, oui.

Je vous conseille vivement de commencer par déclarer les règles de réécriture les plus complexes et de réserver les plus simples pour la fin (en gros, dans notre exemple, inversez l'ordre du code ci-dessus). En effet, si vous n'appliquez pas cette règle, vous risquez d'avoir des surprises à l'affichage de la page http://www.monsite.com/chemin-depuis-la ... -edit.html par rapport à la page http://www.monsite.com/chemin-depuis-la ... aram3=edit .

Autrement dit, si

Code : Tout sélectionner

RewriteRule ^page([0-9]+)-([a-z]+)-([a-z]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1&param2=$2&param3=$3 [L] RewriteRule ^page([0-9]+)-([a-z]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1&param2=$2 [L] RewriteRule ^page([0-9]+)\.html$ /chemin-depuis-la-racine-du-site/page.php?param1=$1 [L]
alors http://www.monsite.com/chemin-depuis-la ... -edit.html = http://www.monsite.com/chemin-depuis-la ... aram3=edit