Jump to content

Pourquoi les URL en /?abcdef ne renvoient pas de 404 ?


Recommended Posts

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 by SamPlissken (see edit history)
Link to comment
Share on other sites

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

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

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 by Cobs (see edit history)
Link to comment
Share on other sites

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

  • 3 weeks later...

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...