Redirection 301 + url Rewriting sur htaccess Help !

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 ! :)
 
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]
 
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 :/
 
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
 
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]
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut