Bonjour ou bonsoir à tous,
J'ai un problème d'appel à API sur mon site, hébergé sur un serveur Apache mutualisé.
Je lance un call sur l'URL suivante : "http://www.monsite.com/api/v1/client/1234"
Dans le répertoire : "http://www.monsite.com/api/v1/client/", j'ai placé le fichier htaccess suivant :
Options +FollowSymlinks
RewriteEngine on
...suivi de l'une des 4 règles suivantes :
- RewriteRule ^.*([0-9]+)$ http://www.monsite.com/fiche.php?idrec=$1 [L]
- RewriteRule ^.*(\d+)$ http://www.monsite.com/fiche.php?idrec=$1 [L]
- RewriteRule ^.*\/(\d+)$ http://www.monsite.com/fiche.php?idrec=$1 [L]
- RewriteRule ^.*client\/(\d+)$ http://www.monsite.com/fiche.php?idrec=$1 [L]
Le but est évidemment de passer à mon script "fiche.php" l'ID du record-client concerné, compris entre 0 et 9999.
En passant l'ID "1234" comme indiqué au début de ce post, j'obtiens :
- avec les règles (1) et (2) : le lancement correct de mon script php, mais avec le "4" final de "1234" et lui seul (donc : http://www.monsite.com/fiche.php?idrec=4). Ce que je peux à la rigueur comprendre, si le ".*" initial skippe tout sauf le dernier caractère.
- avec les règles (3) et (4) : l'erreur "Not Found" provoquée en sortie du htaccess (!)
J'ai essayé plein d'autres expressions, que je valide sur un testeur en ligne : toutes catchent exactement les valeurs d'ID que je passe.
Mais en ligne, dans l'htaccess... rien à faire : "Not Found" systématique !
En particulier, le RewriteRule semble planter dès que je passe un slash d'URL (échappé en \/) : c'est ici le cas dans les variantes n°3 et 4.
Où est donc mon erreur ???
Merci de vos lumières (...je HAIS les RegEx) !
Partager