[Resolue]les anciennes pages dynamiques vers les nouvelles.

  • Auteur de la discussion Auteur de la discussion medjaz
  • Date de début Date de début
WRInaute discret
j'essaie de renvoyer les anciens url vers les nouveaux par un 301
Le htaccess normale :
Code:
RewriteRule ^page-(.*)-ref-(.*)\.html$ /index.php?page=$1&ref=$2 [L]
ca marche impec sauf que chaque page est encore accessible par son encien url.
et lorsque je fait :
Code:
RewriteRule ^page-(.*)-ref-(.*)\.html$ /index.php?page=$1&ref=$2 [L,R=301]
J'ai l'inverse ca me renvoie vers l'ancienne page alors je l'inverse comme ca :
Code:
RewriteRule ^index.php?page-(.*)&ref=(.*)$ /page-(.*)-$2.html [R=301]
RewriteRule ^page-(.*)-ref-(.*)\.html$ /index.php?page=$1&ref=$2 [L]

Mais rien ca marche pas.
Je suis bloqué.... :( et tout aide est le bien venue

PS : J'avais deja vue un post ici qui montrait comment reecrire puis comment redireger les anciens vers les nouveaux mais j'arrive pas a le retrouver. :roll:
-----------------------------
Voici la solution apres 3 jours de test et recherche ... 8) :

Code:
RewriteEngine on
#
#Pour reecrire les liens :
#
RewriteRule ^page-(.*)-ref-(.*)\.html$ /index.php?page=$1&ref=$2 [L]
#
#Pour rediriger les anciennes pages dynamiques vers les nouvelles :
#
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^&]+)&ref=([^\ ]+)\ HTTP/
RewriteRule ^index\.php$ http://site.com/page-%1-ref-%2.html? [R=301,L]
 
WRInaute occasionnel
Non mais c'est normal que la page soit accessible par l'ancien URL...

Mets juste ça :
Code:
RewriteRule ^page-(.*)-ref-(.*)\.html$ /index.php?page=$1&ref=$2 [L]

Et ne fais pas de lien de type /index.php?page=$1&ref=$2 sur ton site.
 
Nouveau WRInaute
Et pour rediriger les anciennes URL indexées par les moteurs de recherche, tu as écrit ta règle de redirection à l'envers. Et dans ce que tu mets tu as une erreur, tu utilises (.*) dans la seconde partie de la règle.

Code:
RewriteRule ^index.php?page=(.*)&ref=(.*)$ /page-$1-ref-$2\.html [R=301]
A placer avant l'autre règle de réécriture en effet.
 
WRInaute discret
Seraph
Je ne trouve pas la difference entre se code et le miens, c'est le meme, la reecriture marche impec mais les anciennes toujours accessible avec se meme code, j'ai reverifier.

Nick ar gall
J'ai reessayer avec ton code mais ca marche pas, je la'i mis avant l'autre je l'ai bien verifier mais rien ne se passe comme s'il n'existait pas..
 
WRInaute accro
oups j'm'a gouré je crois : essaie ça

Code:
RewriteRule ^index\.php?page=(.*)&ref=(.*)$ /page-$1-ref-$2.html [R=301]
 
WRInaute discret
nickargall a dit:
oups j'm'a gouré je crois : essaie ça

Code:
RewriteRule ^index\.php?page=(.*)&ref=(.*)$ /page-$1-ref-$2.html [R=301]

Ca marche pas, les ? = et & ne pose t-il pas de probleme sur se 301 ?
 
WRInaute discret
J'ai mis ca :
Code:
RewriteCond %{QUERY_STRING} ref=([0-9]+)
RewriteRule ^(.*)$ http://www.site.com/page-mot1-mot2-ref-%1.html [L,R=301]

sa redirige vers cette url :
-http://www.site.com/page-mot1-mot2-ref-112.html?page=mot1-mot2&ref=112

et non pas comme ca :
-http://www.site.com/page-mot1-mot2-ref-112.html
 
WRInaute accro
Tu veux faire une redirection et tu utilises une commande de réécriture. Donc forcement par defaut ca te replace ta chaine.

utilise:
RedirectMatch
 
WRInaute accro
nickargall a dit:
ben non, il utilise un rewiterule nouveau-ancien [L] pour la réécriture
coulpé par un rewriterule ancien-nouveau [R=301] pour la redirection

et comment empeche tu la chaine(Query) de passer ? regarde bien son probleme. J'ai eu le meme et je suis passé par un RedirectMatch pour le solutionner. Si tu as la solution avec rewiterule, je suis prenneur.
 
WRInaute discret
rewriterule ou redirectmatch, quelque soit la solution je suis preneur.

J'ai changer rewriterule par redirectmatch et ca marche tjs pas.

J'ai aussi mis :
Code:
RedirectMatch 301 index.php?page=mot1-mot2&ref=(.*) http://www.site.com/page-mot1-mot2-ref-$1.html

et rien

une redirection avec rewrite rule ca existe et comme j'ai dit plus haut ca marche a l'inverse chez moi et pas comme je veux..
 
WRInaute discret
y'a t il une erreur ?
Code:
RewriteRule ^index\.php$ %{QUERY_STRING} [C]
RewriteRule ref=(.*) http://www.site.com/page-mot1-mot2-ref-$1\.html? [R=301]

Sur la barre de navigation Firefox la redirection parait bonne mais ca me dit impossible, une redirection qui n'aboutira pas ?....
 
Discussions similaires
Haut