Jump to content

Petit coup de pouce pour des 301 en htaccess


Recommended Posts

Bonjour,

Je m'arrache les cheveux n'etant pas spécialiste des expressions rationnelles.

Si une brute en htaccess pouvait me faire conserver mon aspect capillaire je lui en serais reconnaissant.

Je cherche a transférer en 301 cette ancienne url

http://www.mosite.com/shop/cgv.php?lang=fr

vers ça

http://www.mosite.com/lang-fr/content/3-conditions-generales-de-ventes

RewriteCond %{REQUEST_URI} ^\/shop/cgv\.php(.*)$
RewriteCond %{QUERY_STRING} ^lang=([a-z]{2})$
RewriteRule ^(.*)$ /lang-$1/content/3-conditions-generales-de-ventes? [R=301,L]



me donne ça http://www.mosite.com/lang-shop/cgv.php/content/3-conditions-generales-de-ventes

Si quelqu'un peut me donner une piste ça serait cool. J'ai l'impression qu'il écrase $1 avec l'url mais sans la query_string avec, mais pourquoi alors que c'est censé être chainé non ? Comment ne prend-on qu'une partie de la query_string ? comment on récupère le contenu des parenthèses de la deuxieme ligne ? la doc Apache est pas super claire la dessus.




Note: Query String

The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.


J'ai essayé avec QSA mais ça met juste la query_string à la fin. Quand au point d'interrogation au milieu et bien je ne veux pas rajouter toute la query string mais une partie, la valeur de lang....

Merci d'avance !
Link to comment
Share on other sites

Donc Philippe vient de m'apprendre la différence entre un signe dollar et un signe pourcentage et je l'en remercie bien bas.

RewriteCond %{REQUEST_URI} ^\/shop/cgv\.php$
RewriteCond %{QUERY_STRING} ^.*lang=([a-z]{2})$
RewriteRule ^.*$ /lang-%1/content/3-conditions-generales-de-ventes? [R=301,L] 

Link to comment
Share on other sites

  • 2 weeks later...

Salut,

dans mon cas je cherche à faire une redirection 301 de vieux lien oscommerce vers ma nouvelle boutique prestashop qui est toujours sur le même domaine.

ainsi à partir d'une adresse oscommerce du type :

/product_info.php?cPath=93_41&products_id=660

je devrait retrouver la bonne page prestashop puisque mes catégories et produits on conservés leur id.

Link to comment
Share on other sites

a rajouter manuellement dans ton htaccess

Redirect permanent /product_info.php?cPath=93_41&products_id=660 http://www.maboutique.fr/4192-monproduit.html

n'oubli pas le "/catalog" avant si ton oscommerce était de base et pas direct à la racine!
Je ne sais pas si c'est la meilleure solution, mais chez moi cela fonctionne très bien.
J'espère que cela t'aidera
A+, steph

Link to comment
Share on other sites

Un truc non testé comme ça ou pas loin....


RewriteCond %{REQUEST_URI} ^\/product_info\.php$
RewriteCond %{QUERY_STRING} ^.*products_id=([0-9])$
RewriteRule ^.*$ /%1-.html? [R=301,L] 



Cordialement,



Merci, mais cela ne fonctionne pas c'est vraiment un truc barbare les expressions régulières.
Link to comment
Share on other sites

Hello,

En fait c'etait un exemple simplifié car les urls sont un peu plus compliquées que cgv.php?lang=fr, il y avait possiblement d'autres paramètres dans l'url dans le ddesordre et il y avait beaucoup de produits et de cms sur la boutique en question donc j'ai préféré faire du bon vieux parsage d'url, mais merci pour la réponse.

Bon week end !

Link to comment
Share on other sites

  • 2 years later...

Bonjour Jeckyl,

 

as-tu réussi à faire tes redirections? car étant moi même dans cette situation là et n'ayant pas la moindre idée de la façon comment procéder, je suis un peu comme un c_n :(

 

Si vous avez des solutions je suis preneur

 

Cordialement

Maxime ^_^

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...