Catégories
Apache

Comment rediriger des urls avec paramètres ?

Cet article sera très court, puisqu’il aura pour but de vous fournir une astuce pour l’url rewriting et plus particulièrement la ré-écriture d’url possédant des paramètres.
Les exemples proposés dans la suite de cet article seront à placer bien évidemment dans votre fichier .htaccess.

Exemples et mise en place de redirections

Admettons que l’index de google soit pollué de pages du type :
– http://www.example.com/index.php?option=blabla&value=bliblibli&name=chucknorris
Avec bien évidemment des variantes pour les valeurs option, value et name (sinon ca n’a aucun intérêt).
Toutes ces pages ne sont par exemple que des filtres permettant de présenter vos produits de différentes manières. Votre SEO adoré vous a fait remarquer (à juste titre d’ailleurs) que tout cela contribue fortement au duplicate content interne de votre site.
Après avoir corriger tout cela, vous aimeriez bien rediriger toutes ces vilaines url vers une seule : index.php (qui elle même renvoie vers la racine de votre site CQFD).

Voici donc un exemple permettant de réaliser cela :

# A vous d'ecrire une regle plus evoluee si vous souhaitez affiner la redirection
RewriteCond %{QUERY_STRING} ^option=.*$
RewriteRule ^(.*)$ /$1?%1 [L,R=301]
 
# Redirection de index.php vers la racine /
RewriteRule ^index.php	/ [R=301,L]

Lutter efficacement contre les PHPSESSID

Allons un peu plus loin, et utilisons les headers HTTP pour rediriger le fléau des moteurs : les sessions dans l’url !!!
Les sessions passées via l’url sont responsables d’un DC [Duplicate Content] Massif pour votre site. En effet, à chaque fois qu’un bot vient crawler votre site, la session a expiré, mais la page elle est identique.
Ce ne sont que quelques exemples, mais ils sont flagrants :

Sachez qu’il n’est pas difficile de remédier efficacement à ce problème. Un exemple parlant toujours mieux que de longues palabres, voici donc une solution :

# On desactive la transmission de session dans l'url
SetEnv SESSION_USE_TRANS_SID 0
SetEnv SESSION_USE_ONLY_COOKIES 1
 
# Et on redirige les PHPSESSID
RewriteCond %{QUERY_STRING} PHPSESSID=.*$
# Nous utilisons les Headers HTTP en verification supplementaire
# pour l'exemple prenons une url du style http://www.example.com/produit.php?id=42&PHPSESSID=eec4a9b35b6ff28753a7d2c98504ae72 
RewriteCond %{THE_REQUEST} !^[A-Z]+\ /produit\.php\?id=.*\ HTTP/
# Et on redirige tout ce beau monde sur la page sans la variable PHPSESSID
RewriteRule .* %{REQUEST_URI}? [R=301,L]

8 réponses sur « Comment rediriger des urls avec paramètres ? »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *