Oct
20

Redirection d’URL avec variables PHP

Vous avez changé le nom d’une page ou alors vous l’avez changée de répertoire et donc, pour ne pas perdre son référencement et éviter le duplicate content vous aurez besoin de faire une redirection permanente (code 301).

Sauf que si votre page contient des variables PHP, une redirection simple réalisée par l’intermédiaire d’un fichier .htaccess ne fonctionne pas.

Voyons comment régler ce problème.

Redirection simple

Reprenons depuis le début et voyons comment se passe une redirection classique en utilisant un fichier .htaccess que l’on met dans le répertoire où se trouve l’ancienne page.

Imaginons que vous souhaitiez faire la redirection suivante :

http://empire.info/ici.html vers http://empire.info/la-bas.html

La syntaxe pour ce genre de redirection est la suivante :

Redirect permanent /ici.html http://empire.info/la-bas.html

ou

Redirect 301 /ici.html http://empire.info/la-bas.html

Note : pour la source il faut toujours spécifier le chemin depuis la racine donc ça commence toujours par un « / »

Note 2 : pour la destination il faut toujours donner le protocole donc ça commence dans le cas présent par « http:// »

Problème

Maintenant on veut faire la redirection suivante :

http://empire.info/index.php?id=ici vers http://empire.info/index.php?id=la-bas

Donc si on suit ce qu’on a fait précédemment il faudrait écrire la ligne suivante :

Redirect permanent /index.php?id=ici http://empire.info/index.php?id=la-bas

Sauf que cette écriture ne marche pas.

Réécriture d’URL

Pour résoudre ce problème utilisons l’URL rewriting

Je précise tout les hébergeurs ne proposent pas cette option à commencer par les hébergeurs gratuits.

Commençons notre fichier .htaccess en activant l’URL rewriting avec la commande suivante (oui, par défaut cette option est désactivée sur les serveurs):

RewriteEngine On

 

Une seule variable

Maintenant écrivons notre redirection de la manière suivante :

RewriteCond %{QUERY_STRING} ^id=ici
RewriteRule index.php http://empire.info/index.php?id=la-bas [L,R=301]

Dans RewriteCond, id est le nom de la variable de la page source.

Dans RewriteRule index.php est la page source ensuite se trouve la destination, qui, comme précédemment doit commencer par le protocole (« http:// »).

R=301, vous vous en doutez, sert à faire la redirection permanente

L sert à ne pas continuer la lecture du fichier .htaccess au cas où il y’aurait d’autres règles derrière

Voilà votre redirection faite, seulement, elle ne fonctionne que si la variable dont vous avez besoin est en premier.

Plusieurs variables

Si vous souhaitez rediriger une page dont la source est http://empire.info/index.php?secteur=ailleurs?id=ici en n’utilisant pas la variable « secteur » mais juste la variable « id » il faut faire une légère modification à savoir :

RewriteCond %{QUERY_STRING} &?id=ici
RewriteRule index.php http://empire.info/index.php?id=la-bas [L,R=301]

« ^ » a été remplacé par « &? »

 

 

 

Articles similaires :

  • Pas d'articles similaires

2 Comments to “Redirection d’URL avec variables PHP”