2 adresses vers 1 seules

Nouveau WRInaute
Bonjour à tous,

Voilà je suis sur une boutique Oscommerce et il y a quelques temps j'ai fait de l'Url rewritting pour mes fiches produits

Ex:
Code:
RewriteRule ^(.*)-([0-9]+)a.php$ product_info.php?products_id=$2

ce qui donnait www.mon-domaine.fr/nom-de-mon-produit-4545.php (4545 étant l'id de mon produit) au lieu de www.mon-domaine.fr/product_info.php?products_id=4545

Le problème c'est qu'il n'y a pas longtemps j'ai du changer ma méthode de réécriture (pour différentes raisons) avec cette méthode:

Code:
RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}

ce qui donne: www.mon-domaine.fr/nom-de-mon-produit-p-4545.html (4545 étant l'id de mon produit)

Ma question est toute simple: Comment rediriger mes anciennes urls réécrites (www.mon-domaine.fr/nom-de-mon-produit-4545.php) vers mes nouvelles urls réécrites (www.mon-domaine.fr/nom-de-mon-produit-p-4545.html)

j'ai essayé de faire:
Code:
RewriteRule ^(.*)-p-([0-9]+).html$ (.*)-([0-9]+).php
mais ça ne marche pas :?

Quelqu'un saurait il comment faire ??

merci beaucoup.
 
WRInaute impliqué
Il faut utiliser une redirection 301 de l'ancienne adressse html vers la nouvelle :

Code:
RewriteRule ^(.*)-([0-9]+).html$ $1-p-$2.html  [R=301]
 
Nouveau WRInaute
Salut Vap,

Merci pour ta réponse.

Tout mon problème est qu'en fait je veut a la fois rediriger mon ancienne adresse réécrite vers ma nouvelle adresse réécrite, mais aussi bien évidemment faire la réécriture.

je m'explique:

Code:
#Réécriture de l'url d'oscommerce
RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}

# Rédirectionnement de mon ancienne url réécrite vers ma nouvelle
RewriteRule ^(.*)-p-(.*).html$ $1-$2.php [R=301]

Si je fait comme cela ça ne marche toujours pas :(
 
WRInaute impliqué
As tu essayé ce que je propose?

Il s'agit de mettre les deux règles suivantes a la place de celles que tu as mises :

Code:
RewriteRule ^(.*)-([0-9]+).html$ $1-p-$2.html  [R=301] 
RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}

La première redirige les anciennes html vers les nouvelles. La deuxième interprete les nouvelles par du php.

Il faut la premiere redirection, sinon tu auras un dupplicate content.
 
WRInaute accro
vap, pour une redirection en .htaccess il te faut une condition... sinon tu fais de la réécriture. Tu captures tes variables dans la condition et tu les retournes dans l'url physique.
so, en PHP ca va + vite à construire et c'est le genre de snippet qu'on aime bien avoir sous la main:

Code:
<?php  $rel = strstr ($url,'-p-');
       if($rel != FALSE) {
          header("Status: 301 Moved Permanently");
          header("Location: http://".$_SERVER['HTTP_HOST']."/".$nom_produit."-".$id.".html");
          } ?>
 
Discussions similaires
Haut