[Apache & PHP] Probleme de 'casse' avec mod_rewrite

Probleme de 'casse' avec mod_rewrite [Apache & PHP] - PHP - Programmation

Marsh Posté le 14-03-2003 à 00:23:47    

je debute avec mod_rewrite et je butte sur un petit probleme.
 
j'essaye de rediriger scripts/XXX.png vers scripts/test.php3?img=XXX
et scripts/XXX.html vers vers scripts/test.php3?txt=XXX
mais quoi que j'envoie, la valeur du parametre txt ou img est toujours en minuscule.
 
Voila mon .htaccess

RewriteEngine on
RewriteRule ^(.+)\.png$ /scripts/test.php3?img=$1
RewriteRule ^(.+)\.html$ /scripts/test.php3?txt=$1


 
et voici mon test.php3

Code :
  1. <?
  2.   if (($img != "" )&&($txt == "" )){
  3.     header("Content-type: image/png" );
  4.     $image = imagecreate(strlen($img) *11,16);
  5.     $white = imagecolorallocate($image, 255, 255, 255);
  6.     $black = imagecolorallocate($image, 0, 0, 0);
  7.     imagefilledrectangle($image, 0, 0, $width, $height, $white);
  8.     imagestring($image,3,1,1,$img,$black);
  9.     imagepng($image);
  10.     imagedestroy($image);
  11.   }
  12.   else if (($img == "" )&&($txt != "" )){
  13.     echo $txt;
  14.   }
  15.   else {
  16.     echo "gné?!?";
  17.   }
  18. ?>


 
si je vais sur  
h**p://le_site/scripts/tOtO.png, une image est bien générée mais elle affiche toto (pas de O majuscule)
de meme, si je vais sur  
h**p://le_site/scripts/tOtO.html, une page est bien renvoyée mais elle contient toto (toujours pas de O majuscule)
 
j'ai regardé les differents parametres que l'on peut ajouter apres RewriteRule mais je n'ai rien vu qui puisse resoudre mon probleme...
 
Qu'est ce que j'ai oublié ?!


Message édité par JWhy le 14-03-2003 à 00:33:19

---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 14-03-2003 à 00:23:47   

Reply

Marsh Posté le 14-03-2003 à 14:56:33    

http://setihfr.free.fr/jwhy/reutil/pleasehelp.jpg

Reply

Marsh Posté le 14-03-2003 à 21:23:44    

J'ai refait un exemple simplifié pour voir d'ou venait le probleme...
 
je dois faire qqchose comme ca:
rediriger
  h**p://website/test_mod_rewrite/tEsT.gif  
vers
  h**p://website/img_tEsT
 
et
rediriger
  h**p://website/test_mod_rewrite/tEsT.html
vers
  h**p://website/txt_tEsT
 
les differences min/maj sont nécessaires (dans mon "vrai" cas, la redirection devra aller sur un script php qui se connecte a une table dont la clé primaire , passé en parametre, est BINARY)
 
Apres avoir activé le mod_rewrite dans la config apache et dans mon repertoire /test_mod_rewrite, j'ai mis un .htaccess qui contient

Code :
  1. Options FollowSymLinks
  2. RewriteEngine on
  3. RewriteRule ^(.+)\.gif$ /img_$1
  4. RewriteRule ^(.+)\.html$ /txt_$1


 
la redirection se fait correctement mais les min/maj ne sont pas préserver
j'ai donc activer la "trace" pour le mod_rewrite dans la config apache pour voir ce qu'il se passait:

Code :
  1. <IfModule mod_rewrite.c>
  2.   RewriteEngine on
  3.   RewriteLogLevel 9
  4.   RewriteLog C:\MOD_REWRITE.LOG
  5. </IfModule>


 
 
quand j'accede a h**p://website/test_mod_rewrite/tEsT.gif  
le fichier access.log contient

Code :
  1. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] "GET /test_mod_rewrite/tEsT.gif HTTP/1.1" 404 322


(jusqu'a la tout va bien puisque les /txt_XXX ou /img_XXX n'existent pas)
 
par contre, ce qui m'embete c'est que le fichier error.log contient:

Code :
  1. [Fri Mar 14 10:50:09 2003] [error] [client xxx.xxx.xxx.xxx] File does not exist: c:/easyphp/www/img_test


img_test est en minuscule alors que j'attendais img_tEsT :/
 
de plus, la trace de mod_rewrite montre bien qqchose de bizarre:

Code :
  1. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (2) init rewrite engine with requested uri /test_mod_rewrite/tEsT.gif
  2. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (1) pass through /test_mod_rewrite/tEsT.gif
  3. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (3) [per-dir c:/easyphp/www/test_mod_rewrite/] strip per-dir prefix: c:/easyphp/www/test_mod_rewrite/test.gif -> test.gif
  4. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (3) [per-dir c:/easyphp/www/test_mod_rewrite/] applying pattern '^(.+)\.gif$' to uri 'test.gif'
  5. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (2) [per-dir c:/easyphp/www/test_mod_rewrite/] rewrite test.gif -> /img_test
  6. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (3) [per-dir c:/easyphp/www/test_mod_rewrite/] applying pattern '^(.+)\.html$' to uri '/img_test'
  7. xxx.xxx.xxx.xxx - - [14/Mar/2003:10:50:09 -0600] [localhost/sid#796048][rid#db4088/initial] (1) [per-dir c:/easyphp/www/test_mod_rewrite/] internal redirect with /img_test [INTERNAL REDIRECT]


l'url soumise est correcte (difference min/maj sur les 2 premieres lignes) mais ensuite, a partir de la 3eme ligne, tout utilise la version "minuscule" de l'URL soumise :(
 
Ais-je oublié un truc ? est-ce un comportement normal ?
 
J'utilise Easyphp v1.6 (Apache/1.3.24, PHP Version 4.2.0) sous Windows 2000.


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 14-03-2003 à 22:48:11    

finalement, c'est peut-etre lié a Windows (merci Siegone)http://www.webmasterworld.com/forum23/1199.htm :(
 
qq'un d'autre a t'il déja eu ce cas ou a trouvé un moyen de contourner ce probleme (autre qu'installer Linux !)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Sujets relatifs:

Leave a Replay

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