Ne prendre qu'une partie d'un QueryString dans une regex RewriteCond

Nouveau WRInaute
Bonjour, :)
Nous avions un site web avec des URLs du type pour nos articles : https://www.monsite.com/article?name=mon-article
Récemment, nous avons changé la structure du site et utilisons maintenant un router PHP.
Les nouvelles URLs ressemble à cela : https://www.monsite.com/fr/article/mon-article

J'ai donc utilisé un .htaccess pour rediriger les anciennes URLs vers les nouvelles URLs :
Code:
RewriteCond %{QUERY_STRING} ^name=(.+)$ [NC]
RewriteRule ^article(.php)?$ /fr/article/%1? [NC,R=301]

Tout fonctionne très bien, sauf que nous avions partagé des URLs de la v1 (article?name=mon-article) sur Facebook... sauf que Facebook rajoute toujours le paramètre GET "?fbclid=token" à ses URLs partagées.
Lors de la v1, quand on cliquait sur un lien Facebook, ça donnait ça : https://www.monsite.com/article?name=mon-article&fbclid=token (forcément, Facebook rajoutait &fbclid à la place de ?fbclid car fbclid était en second paramètre)
Maintenant sur la v2, ça donne ça : https://www.monsite.com/fr/article/mon-article&fbclid=token
Dans la v1, le paramètre GET fbclid était en second, donc avec & devant. Maintenant, il est
seul sur la v2, mais le & n'est pas remplacé par un ?. Ce qui fait que notre article se nomme "mon-article&fbclid=token" à la place de "mon-article", étant donné que le &fbclid n'est plus considéré comme un paramètre car il est le premier paramètre GET et n'a pas de point d'interrogation ("?fbclid=").

J'ai donc résolu le problème en enlevant ce "&fbclid=token" avec PHP puis en faisant une redirection 301, mais j'aurais aimé savoir s'il était possible de faire cela avec le .htaccess en modifiant le code déjà présent ci-dessus ?
Je pensais à un code de ce genre : RewriteCond %{QUERY_STRING} "prendre tout ce qu'il y a après name= et s'arrêter à &fbclid="
OU à un code qui remplace &fbclid par ?fbclid (ça serait carrément plus simple, à mon avis)
J'ai essayé plusieurs Regex depuis ce matin mais rien ne marche pour l'instant.

Voilà donc mon problème, qui n'est pas super grave car PHP s'occupe des redirections, mais j'aurais trouvé ça plus propre de le faire direct dans le .htaccess :)
J'espère que quelqu'un pourra m'aider s'il connait la solution ou a déjà été confronté à ce problème ! (merci surtout FB qui rajoute un paramètre à ses URLs externes ! :mad:)

Merci d'avance pour votre aide ! :D

Cordialement,
 
WRInaute accro
lu

et capturer les 2 ne fonctionne pas ?
Code:
RewriteCond %{QUERY_STRING} ^name=(.+)&fbclid=(.+)$ [NC]
RewriteRule ^article(.php)?$ /fr/article/%1? [NC,R=301]
 
Discussions similaires
Haut