Bonjour à tous,
Je me permet de faire appel à l'aide de la communauté OVHienne pour essayer de résoudre mon problème.
J'ai contacté le support, mais je n'ai toujours aucune réponse de leur part, alors j'espère que je vous allez pouvoir me tirer de mon désespoir
J'ai mis en place une règle d'URL Rewriting que voici :
Code:
RewriteRule api/(.*)$ api/entrypoint.php?request=$1 [QSA,NC,L]
Donc, tout ce qui arrive sur "/api/xxx/yyy" est renvoyé vers "/api/entrypoint.php?request=xxx/yyy".
Cette règle fonctionne très bien la plupart du temps. Une requête en GET ou DELETE par exemple est bien redirigé vers mon fichier "entrypoint.php"
J'ai cependant constaté un fonctionnement très étrange sur les requête POST et PUT.
Lorsque j'effectue une telle requête en passant un "Content-Type" à "application/x-www-form-urlencoded" ou "multipart/form-data" par exemple, là encore aucun souci. En revanche, dès que j'utilise le "Content-Type" "application/json", je me paye une erreur 403 me disant que je n'ai pas le droit d'accéder au dossier "api/xxx/yyy".
Cela fait plusieurs heures que j'essaye de me dépatouiller de ce problème mais rien n'y fait. Google n'a rien donné pour m'aider. Je commence à être très très désespéré.
Je ne suis même pas sûr que ce soit lié à l'URL Rewriting en fait, car même une requête directe sur mon fichier "api/entrypoint.php?request=xxx/yyy" fonctionne sans souci en GET/DELETE ou POST/PUT avec le "Content-Type" qui va bien, mais plus du tout dès que le "Content-Type" vaut "application/json".
D'autant plus que cette même configuration fonctionnait très bien en local sur mon EasyPHP...
Pour information, voici le contenu complet de mon .htaccess :
Code:
Options -Multiviews +FollowSymLinks -Indexes
RewriteEngine on
RewriteBase /evr/
RewriteRule api/(.*)$ api/entrypoint.php?request=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)/modules/(.*)
RewriteRule ^(.*) index.php [NC,L]
et de mon .ovhconfig
Code:
; ovhconfig
;
; this file must be placed in $HOME/.ovhconfig or in $DOCUMENT_ROOT/.ovhconfig
; __app.engine__
;
; values: php (php engine + opcache accelerator)
; notice: if php, a phpcgi engine will be activated as fallback (if previous engine crash)
;
; php:
; IMPORTANT: register_globals and magic_quotes_gpc are off for security
; php options .htaccess (like php version) are ignored
; phpcgi:
; IMPORTANT this is a fallback or previous system
; in this case __app.engine.version__ will be considerated as AUTO and php version will be old system
; (meaning depending .htaccess or .phpX extension)
;
app.engine=php
; __app.engine.version__ specify version of your engine
;
; for php:
; default: 5.4
; for phpcgi:
; this options is ignored (= fallback in AUTO)
;
app.engine.version=5.6
; __http.firewall__ used to add application firewall (filter http requests)
;
; values: none | security
; default: none
;
http.firewall=none
; __environment__
;
; values: production | development
;
; production:
; apache will maximise local cache
; mod_expires will grow up TTL of js, css, pdf, images, video, audio
; you can override it changing expiration explicitly or in your .htaccess
; feel free to look on our guide.
; development:
; no expiration is added, files are not locally in cache,
; will speed up tests but decrease performances
;
; choosen environment will also be available in your variable ENVIRONMENT unix env
;
; default: production
;
environment=development
Merci à tous de m'avoir lu jusque là et j'espère que quelqu'un à une idée, parce que moi, vraiment, je sèche...