Redirection 301 + url Rewriting sur htaccess Help !

WRInaute discret
Bon tout est dans le sujet.
Je suis confronté à un petit problème et j'espère trouver de l'aide ici.

J'ai un vieux site dont l'url des pages étaient de la forme

Code:
monsite.com/page.php?var=toto

j'aimerai les rediriger vers

Code:
monsite.com/blagues-toto

Pour ça pas de problème j'utilise un htaccess de la forme

Code:
RewriteEngine on
RewriteRule ^blagues-([a-zA-Z]*)$ /page.php?var=$1 [L]

Là je vais droit dans le mur avec un beau duplicate content !

je veux donc faire un redirect 301 entre l'ancienne et la nouvelle page.

j'ai essayé [R=301,L] mais ça redirige dans le mauvais sens (blagues-toto vers var=toto )

j'ai même essayé de séparer les 301 et d'écrire le tout à l'envers mais ça ne fonctionne pas non plus.

Code:
RewriteEngine on
RewriteRule ^blagues-([a-zA-Z]*)$ /page.php?var=$1 [L]
RewriteRule ^page.php?var=([a-zA-Z]*)$ /blagues-$1 [R=301]

Je suis certain que c'est tout bête et qu'il me faut des lunettes mais j'ai fouillé sur WRI et sur d'autres forum sans trouver de réponse concluante pour mon cas :(

Merci d'avance ! :)
 
WRInaute occasionnel
Essaie:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^monsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.monsite.com$
RewriteRule ^page.php$ "http\:\/\/\(www\.monsite\.com\/blagues\-toto" [R=301,L]
 
WRInaute discret
hum malheureusement la méthode n'est pas complète elle se finit en boucle de redirection, si on applique un redirect PHP en header ça semble ne pas fonctionner non plus :/
 
WRInaute discret
c'est ce que j'ai fait mais malheureusement je suis redirigé vers blagues-toto.html&redirect :(

Pour palier à ça j'ai créé un redirect header de type:
Code:
     $var = $_GET['var'];
      $URi = $_SERVER["REQUEST_URI"];

          $motif = "'/mapage\.php\?var=$var'i";
          if (preg_match($motif,$URi))
          {
          header("Status: 301 Moved Permanently");
          header("Location: http://www.monsite.com/blagues-$var");
          exit;
          }

et là ça ne fonctionne pas ça redirige vers http://www.monsite.com/blagues- , j'ai l'impression que dès qu'on rentre dans le "if" $var ne vaut plus rien
 
WRInaute passionné
la bonne règles c'est :
Code:
RewriteEngine on
RewriteRule ^blagues-([a-zA-Z]*)$ /page.php?var=$1?rewrite [L]
RewriteCond %{QUERY_STRING} ^var=([a-zA-Z]*)$ 
RewriteRule ^page.php$ /blagues-$1? [R=301]
 
Discussions similaires
Haut