[Nginx] Problème URL rewritting via regex

Problème URL rewritting via regex [Nginx] - Divers - Programmation

Marsh Posté le 02-01-2023 à 10:46:50    

Hello et bonne année !
 
J'ai un problème sur mon serveur nginx pour faire une url rewriting avec un regex.
Quand je teste sur https://regex101.com/ tout est OK.
Mais que j'ajoute dans le fichier conf du site, nginx ne restart pas parce que bug dans la formulation je suppose.
 
Url de base :

Code :
  1. https://monsite.fr/mapage.html#page123


Regex :

Code :
  1. ([a-z0-9\-]+)\.html([[:graph:]]page[0-9]{1,3})


Le test sur https://regex101.com/ renvoi bien group1=mapage et group2=#page123
 
La formulation qui ne marche pas dans nginx :  

Code :
  1. rewrite ^/([a-z0-9\-]+)\.html([[:graph:]]page[0-9]{1,3})$ /monscript.php?mode=page_multiple&id=$1&page=$2 break;


 
Si vous avez des idées, ça m’intéresse.
 
** edit ***
à priori c'est le bloc {1,3} qui fait planter.
J'ai essayé sans et nginx reboot correctement.
Mais le regex ne marche pas pour autant...


Message édité par Fami le 02-01-2023 à 12:03:40

---------------
Ma SteamList (+ Origin, Uplay)
Reply

Marsh Posté le 02-01-2023 à 10:46:50   

Reply

Marsh Posté le 02-01-2023 à 14:00:50    

Lu,
 
vu que ton motif contient des accolades (servant à la base à délimiter les blocs de configuration nginx comme server, location, etc), tu dois l'entourer de quotes :
 

Code :
  1. rewrite "^/([a-z0-9\-]+)\.html([[:graph:]]page[0-9]{1,3})$" /monscript.php?mode=page_multiple&id=$1&page=$2 break;


 
Mais, tu as l'air de vouloir capturer une ancre mais celles-ci ne sont pas envoyées au serveur (ce n'est utilisé que par le client, ce dernier ne l'envoie pas), nginx ne recevra jamais #page123 de https://monsite.fr/mapage.html#page123, juste https://monsite.fr/mapage.html


Message édité par pluj le 02-01-2023 à 14:05:10
Reply

Marsh Posté le 02-01-2023 à 14:39:31    

AH
 
En effet, c'est bien l'ancre que j'ai besoin de capturer...
Mince.
 
Est-ce-que PHP peut les voir lui ou bien, c'est mort aussi ?


---------------
Ma SteamList (+ Origin, Uplay)
Reply

Marsh Posté le 02-01-2023 à 14:44:30    

PHP étant exécuté côté serveur, il ne verra pas plus ce que le client n'envoie pas en premier lieu au serveur.


Message édité par pluj le 02-01-2023 à 14:45:23
Reply

Marsh Posté le 02-01-2023 à 14:53:58    

cheh la direction cheh  [:haha]  
 
à la base, je passais le numéro de la page en form (?page=2; ?page=3) et la page se rechargeait pour afficher les bonnes infos.
Mais ce n’était pas à leur gout et ils ont fait mettre le tout en JS par un jeune avec des liens #ancre pour les pages suivantes et ça a complétement tué le SEO.
2 ans plus tard, la nouvelle direction me demande de revenir en arrière, c'est beau. [:implosion du tibia]


---------------
Ma SteamList (+ Origin, Uplay)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed