Gregory Roussac Posted April 1, 2010 Share Posted April 1, 2010 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=frvers çahttp://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-ventesSi 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 StringThe 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 More sharing options...
Gregory Roussac Posted April 1, 2010 Author Share Posted April 1, 2010 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 More sharing options...
jeckyl Posted April 16, 2010 Share Posted April 16, 2010 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=660je devrait retrouver la bonne page prestashop puisque mes catégories et produits on conservés leur id. Link to comment Share on other sites More sharing options...
Gregory Roussac Posted April 16, 2010 Author Share Posted April 16, 2010 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, Link to comment Share on other sites More sharing options...
cybersteph Posted April 16, 2010 Share Posted April 16, 2010 a rajouter manuellement dans ton htaccess Redirect permanent /product_info.php?cPath=93_41&products_id=660 http://www.maboutique.fr/4192-monproduit.htmln'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'aideraA+, steph Link to comment Share on other sites More sharing options...
cybersteph Posted April 16, 2010 Share Posted April 16, 2010 et pour gregoryRedirect permanent /shop/cgv.php?lang=fr http://www.mosite.com/lang-fr/content/3-conditions-generales-de-ventesvoila Link to comment Share on other sites More sharing options...
jeckyl Posted April 16, 2010 Share Posted April 16, 2010 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 More sharing options...
Gregory Roussac Posted April 16, 2010 Author Share Posted April 16, 2010 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 More sharing options...
Gregory Roussac Posted April 16, 2010 Author Share Posted April 16, 2010 Merci, mais cela ne fonctionne pas Pas testé effectivement mais c'est vraiment pas loin je t'assure.J'ai du oublier le +([0-9]+)Mais le redirect permanent avec toutes les urls à la main ça le fait aussi hein, mais faut toutes les faire et dans chaque langue....Bon courage Link to comment Share on other sites More sharing options...
MaximeRJ Posted October 23, 2012 Share Posted October 23, 2012 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now