Redirection pour eviter des doublons

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Jeu Fév 14, 2008 15:57

Salut,

Un peu d'aide serait le bien venu :P

J'essaie de rewritter mes anciennes url et de faire une redirection des anciennes url vers les nouvelles via un htaccess mais j'ai quelques difficultés, ça marche pas :

Mes anciennes url sont du type :
http://www.mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=25


Mes nouvelles url sont du type :
http://www.mon-site.com/repertoire/ma-rubrique-25.html


Je souhaiterai établir une règle qui me permette de ré-écrire mes url et une autre qui redirige mes anciennes url vers les nouvelles afin d'éviter le duplicate content, comment faire cela ?

J'ai essayé ça mais ça marche pas :
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=$
RewriteRule ^repertoire/index.php?rub=ma_rubrique&module=liste&ref=(.*)$ /mon-site.com/repertoire/ma-rubrique-$1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]


Voyez-vous une ou des erreur(s) ?

Merci pour vos réponses.

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Jeu Fév 14, 2008 16:43

Il y a une erreur sur ta condition. Tu termine la chaine avec le =, alors qu'il y a encore le numéro de rubrique.

Essaie ça:

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]


Si la premiere regle ne arche pas parce que la QUERY_STRING est rajoutée, remplace la par:


Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Jeu Fév 14, 2008 17:14

Merci Vap pour ta réponse mais ça ne marche pas :oops:

Je ne vois pas de différence entre 2 tes propositions, est-ce normal ?

Est-ce que tu confirmes qu'il faut bien mettre -%1.html et pas -$1.html à la fin de la deuxième ligne de ton code ?

Vap
WRInaute accro
WRInaute accro
 
Messages: 1090
Inscription: Dim Juin 17, 2007 20:12

Message le Jeu Fév 14, 2008 20:48

poupilou a écrit:Merci Vap pour ta réponse mais ça ne marche pas :oops:
[/quote ]
Qu'est ce qui ne marche pas?


poupilou a écrit:Je ne vois pas de différence entre 2 tes propositions, est-ce normal ?


Il y a un ? a la fin de la premiere règle dans ma deuxième proposition. C'est pour éviter qu'il rajoute la query string (ce qu'il y avait apres le ? dans l'url originale)

poupilou a écrit:Est-ce que tu confirmes qu'il faut bien mettre -%1.html et pas -$1.html à la fin de la deuxième ligne de ton code ?


Oui. Car on récupère la chaine de caratère qui est entre parenthese dans la condition.

Je testerai a mon retour chez moi.

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Jeu Fév 14, 2008 22:29

Vap en fait lorsque j'utilise ce code :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

ou avec le point d'interrogation à la fin de la deuxième lignes :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php(.*) /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

ni mes anciennes, ni mes nouvelles url fonctionnent ça me renvoie une erreur 404.

Si j'utilise ce code :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php?rub=ma_rubrique&module=liste&ref=(.*) /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1?stop [L]

mes anciennes url fonctionnent mais pas les nouvelles ! Même chose si je remplace le %1 par $1

J'ai essayé aussi de remplacer le %{QUERY_STRING} par %{REQUEST_URI} mais ça change rien :cry:


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 9:00

il n'est pas possible de mettre des paramètres dans la partie gauche des RewriteRule. Il faut mettre &stop sinon il y a deux ?
avec ca :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*).html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 11:35

Merci pour ta réponse webmasterlamogere mais ça ne marche pas non plus, Internet Explorer m'affiche une page d'erreur avec le message suivant "Internet Explorer ne peut pas afficher cette page web" et j'ai essayé avec les anciennes commes les nouvelles url :cry:

Il me reste la possibilité de mettre ce bout de code dans mon code html du style :
Code: Tout sélectionner
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.mon-site.com/repertoire/ma-rubrique-12.html");
exit;

Mais bon si je pouvais faire cela dans le htaccess ce serait quand même mieux !


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 11:43

c'est peut-être avec ca :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 12:06

Non ça ne change rien, même page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 13:02

il ne faut pas oublier "RewriteEngine on" en premier :
Code: Tout sélectionner
RewriteEngine on
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /repertoire/ma-rubrique-%1.html [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /repertoire/index.php?rub=ma_rubrique&module=liste&ref=$1&stop [L]

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 13:50

Le "RewriteEngine on" est bien mis dans mon htaccess.

Dans ton dernier code tu as enlevé le /mon-site.com si tu enlèves ça en local ça ne peut pas marcher, non ? De toute manière, j'ai essayé avec et sans /mon-site.com mais ça change rien, même résultat, toujours la page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 14:09

poupilou a écrit:Le "RewriteEngine on" est bien mis dans mon htaccess.

Dans ton dernier code tu as enlevé le /mon-site.com si tu enlèves ça en local ça ne peut pas marcher, non ? De toute manière, j'ai essayé avec et sans /mon-site.com mais ça change rien, même résultat, toujours la page d'erreur "Internet Explorer ne peut pas afficher cette page web" :cry:

si le chemin est h**p://localhost/mon-site.com/repertoire/index.php?... il faut bien mettre le chemin complet : /mon-site.com/repertoire/index.php
le fichier .htacess doit être dans le répertoire /mon-site.com

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 14:19

Oui tout ça c'est bon et le htaccess est bien dans le bon répertoire, à la racine de mon site "mon-site.com ".


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Ven Fév 15, 2008 14:41

en effet, je viens de tester chez moi et la solution est d'ajouter un ? pour éviter de transmettre les paramètres et de déplacer le stop pour qu'il ne soit pas pris avec le paramètre ref :
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^rub=ma_rubrique&module=liste&ref=(.*)$
RewriteRule ^repertoire/index\.php$ /mon-site.com/repertoire/ma-rubrique-%1.html? [R=301,L]
RewriteRule ^repertoire/ma-rubrique-(.*)\.html$ /mon-site.com/repertoire/index.php?rub=ma_rubrique&module=liste&stop&ref=$1 [L]

poupilou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 140
Inscription: Lun Fév 09, 2004 16:18

Message le Ven Fév 15, 2008 14:53

Chapeau bas maître webmasterlamogere ça marche impeccable :lol:

Merci pour ton aide.

Une autre petite question : je souhaite faire une redirection d'une ancienne url vers une nouvelle url mais qui n'est pas dans le même répertoire, autrement dit :
Ancienne url :
Code: Tout sélectionner
h**p://www.mon-site.com/repertoire/index.php?rub=ma_rubrique

Nouvelle destination pour cette page :
Code: Tout sélectionner
h**p://www.mon-site.com/repertoire2/nouvelle-rubrique.html

Est-ce possible ?

Redirection pour eviter des doublons Redirection pour eviter des doublons

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités