1 votes

Nginx supprime les paramètres en double dans l'URL

Je ai un site qui a un problème causant un problème d'URL ennuyeux. Sur les numéros de page trouvés sur une page, si vous suivez l'un d'eux, il visitera ?page=2, c'est bien.

Si vous suivez ensuite des liens ultérieurs, plutôt que de remplacer le ?page=2, il ajoutera un nouveau. Par exemple : ?page=2&page=3. Pour diverses raisons, j'ai besoin que cela soit ?page=3 et de supprimer le paramètre superflu du début.

Malheureusement, corriger cela dans le code n'est pas possible en ce moment et je me demande si quelqu'un a déjà fait quelque chose de similaire à travers une réécriture NGINX.

0voto

HugoFS Points 313

Vous ne pouvez pas résoudre cela en utilisant la balise rewrite car elle ne fonctionne que sur la partie de l'URI avant la chaîne de requête.

La chaîne de requête est contenue dans les variables $request_uri et $args, qui peuvent être manipulées en utilisant des expressions régulières avec les directives if et/ou map.

Pour traiter votre cas spécifique, vous pourriez utiliser :

if ($request_uri ~ ^(.*)[?]page=2&page=(.*)$) { return 301 $1?page=$2; }

Pour un exemple utilisant map, voir cette réponse : Nginx - Rediriger en fonction des paramètres de la chaîne de requête

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X