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 :
- Les pages index avec sessions dans l’url
- Les pages catalogue avec sessions dans l’url
- Les pages produit avec sessions dans l’url
- Les exemples ne manquent pas, à vous d’être creatifs…
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 ? »
Merci pour cette astuce 😉
[…] Comment re-ecrire des urls contenant des parametres ?. […]
Très bon tuto je m’en vais tester tout cela tout de suite.
Merci pour l’astuce concernant les sessions, c’est vrai qu’on voit beaucoup de sites qui ont des sessions dans leur URL encore aujourd’hui.
Merci beaucoup pour ce petit tutoriel. Je cherchais justement comment faire ça et google m’a rapatrié chez vous.
Excellent tuto, mais il se font de plue en plus rare les sites qui utilisent les sid dans les urls non ?
Justement je cherchais un tuto pour réécrire des URLs avec des paramètres, j’ai vu ton twitt via SEO Campus !
Je bookmark ton tuto ^^
Très bon tutoriel , je vous remercie!