SamPlissken Posted November 3, 2015 Share Posted November 3, 2015 (edited) Bonjour, Dans le cadre d'une future migration d'un shop WooCommerce vers Prestashop, je planche en ce moment sur la redirection des URLs du WooC et je fais donc des tests dans le htaccess de l'installation Prestashop toute fraîche (sans aucun produit). Et je tombe sur des comportements pour le moins étrange… Les URLs de WooC sont sous la forme /?product=AB-123, je fais donc des tests sur cette forme d'url. Sauf que Prestashop, quand on lui donne par exemple l'url /?product=123 il s'en fout, il n'affiche même pas une 404, il renvoie vers l'accueil. Alors que n'importe quelle autre URL fantaisiste renvoie bien vers une 404 ! Pourquoi ? Y a-t-il une raison interne que je ne connais pas ? Si par exemple on lui donne /product=123 là pas de soucis, on est redirigé vers une 404. Ce qui donne également ce comportement étrange avec les RewriteRule : - Si je crée la règle RewriteRule ^?product=([0-9]+)(/)?$ http://nom.domaine/product/$1 [R,L] et que je vais sur http://nom.domaine/?product=123 j'obtiens une erreur 500… - Si je crée la règle RewriteRule ^product=([0-9]+)(/)?$ http://nom.domaine/product/$1 [R,L] et que je vais sur http://nom.domaine/product=123 je suis bien redirigé vers http://nom.domaine/product/123 Donc pourquoi ce "?" met autant de bazar dans l'histoire ? Y'a-t-il un moyen de contourner cela ? Si quelqu'un connaît la réponse ou a une piste, je suis preneur ! Car en l'état, après la migration, tous les visiteurs passant par des anciens liens (Google, forums, signets/favoris…) se retrouveront à l'accueil du site et je ne peux absolument rien y faire… Merci d'avance Edited November 3, 2015 by SamPlissken (see edit history) Link to comment Share on other sites More sharing options...
Cobs Posted November 3, 2015 Share Posted November 3, 2015 Je suis pas un pro du domaine mais quand prestashop se retrouve face a des url un peu étrange, par défaut, il préfère renvoyer un code HTTP 301 qui se transforme en redirection vers l'acceuil quand PS_DEBUG est sur false. Essaye de regarder sur l'interface d'administration dans *Préférence / SEO & URLs / Configuration des URL et de modifier le paramètre sur 'Aucune redirection' Link to comment Share on other sites More sharing options...
SamPlissken Posted November 3, 2015 Author Share Posted November 3, 2015 Merci de ta réponse ! C'est un comportement de Prestashop que je ne connaissais pas. Malheureusement la modification de ce réglage ne change rien… Si l'url commence par + - ou . y'a aucun soucis une redirection sera possible. Avec % je me retrouve avec une "Bad Request" et avec ? ça part sur l'accueil… Link to comment Share on other sites More sharing options...
Cobs Posted November 3, 2015 Share Posted November 3, 2015 je me demandais, il ne faudrait pas échapé ton '?' dans ta règle. Link to comment Share on other sites More sharing options...
SamPlissken Posted November 3, 2015 Author Share Posted November 3, 2015 (edited) Malheureusement non ça ne fonctionne pas sur les points d'interrogation Edited November 3, 2015 by SamPlissken (see edit history) Link to comment Share on other sites More sharing options...
Cobs Posted November 4, 2015 Share Posted November 4, 2015 (edited) ok, mon hypothèse c'est que les url finnisant par "?quelquechose" sont réservé par prestashop pour faire fonctionner le webservice et le système de simpleURL et sont filtré avant le controlleur. Du coup seul certains paramètres sont autorisé (ressource,filter,schema,...). En réalité il faudrait plus que tes url soit de la forme : http://nom.domaine/?id_product=1413&controller=product Edited November 4, 2015 by Cobs (see edit history) Link to comment Share on other sites More sharing options...
SamPlissken Posted November 4, 2015 Author Share Posted November 4, 2015 C'est fortement possible, d'autres avaient le même genre de soucis avec les points d'interrogation mais sous la forme index.php?produit=123. Avec la bonne rewriterule, une rewritecond et en les plaçant avant le controlleur, ça avait l'air de régler le soucis. Mais un /? je n'ai trouvé de solution nulle part… La seule solution que l'on a, c'est de passer en URL simplifié dans WooCommerce en attendant que je termine le nouveau site (ça laissera le temps à Google de faire les redirections), puis ensuite de faire le transfert et y'aura aucune perte. Link to comment Share on other sites More sharing options...
kaen25 Posted November 20, 2015 Share Posted November 20, 2015 Essaye avec : RewriteRule ^\?product=([0-9]+)(/)?$ http://nom.domaine/product/$1 [R,L] D'ailleur je pense que les parenthèses à la fin ne servent à rien (le domaine aussi) RewriteRule ^\?product=([0-9]+)/?$ /product/$1 [R,L] Link to comment Share on other sites More sharing options...
SamPlissken Posted November 21, 2015 Author Share Posted November 21, 2015 Il me semble que j'avais essayé d'échapper le point d'interrogation sans succès… On ne réimporte plus les URLs au final, donc j'ai laissé tombé ce problème. 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