Antho66 Posté 16 Mars 2010 Posté 16 Mars 2010 Bonjour, Je reprend un site dont certaines pages sont accessibles à des urls du type: www.exemple.com/?id=10 et www.exemple.com/index.php?id=10 Les 2 urls apparaissant dans Google, et pour éviter le duplicate content, je voudrais créer une redirection 301 depuis la 1ère vers la 2ème. La règle que j'ai testée ne marche pas, à cause semble-t-il du caractère spécial ? même si je l'échappe avec un \ Mon code : RewriteEngine on RewriteRule ^\?id=([0-9]+)$ /index.php?id=$1 [R=301] Quelqu'un a une idée ?
Le-juge Posté 16 Mars 2010 Posté 16 Mars 2010 Pourquoi tu utilise pas plutot des URLs Canoniques??? ca me semble plus simple dans l'approche
Jeanluc Posté 16 Mars 2010 Posté 16 Mars 2010 Ça ne marchait pas parce que tu ne peux pas traiter la query string de cette manière. Essaie ceci: RewriteEngine onRewriteCond %{QUERY_STRING} ^id=RewriteRule ^$ http://www.exemple.com/index.php [L,R=301] Jean-Luc
Antho66 Posté 17 Mars 2010 Auteur Posté 17 Mars 2010 (modifié) Merci, ca marche parfaitement. Encore une question, je veux ajouter une redirection de /index.php?id=1 et de /?id=1 vers la racine du domaine www.exemple.com. J'ai essayé, mais sans succès : RewriteCond %{QUERY_STRING} ^id=1$ RewriteRule ^$ / [L,R=301] Ainsi si je tape www.exemple.com/?id=1, il me renvoi toujours vers www.exemple.com/index.php?id=1 et non vers www.exemple.com/ Qu'est-ce que ne va pas dans la syntaxe ? Modifié 17 Mars 2010 par Antho66
Antho66 Posté 17 Mars 2010 Auteur Posté 17 Mars 2010 J'ai trouvé cette solution qui fonctionne : RewriteCond %{QUERY_STRING} ^id=1$ RewriteRule ^.*$ /? [L,R=301]
Jeanluc Posté 17 Mars 2010 Posté 17 Mars 2010 C'est bien ainsi qu'il faut faire avec le ? pour indiquer qu'il ne faut pas reprendre la query string. Jean-Luc
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant