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 :
- Options FollowSymLinks
- RewriteEngine on
- RewriteRule ^(.+)\.gif$ /img_$1
- 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 :
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteLogLevel 9
- RewriteLog C:\MOD_REWRITE.LOG
- </IfModule>
|
quand j'accede a h**p://website/test_mod_rewrite/tEsT.gif
le fichier access.log contient
Code :
- 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 :
- [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 :
- 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
- 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
- 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
- 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'
- 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
- 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'
- 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