Dans un contexte .htaccess
, j'ai une règle simple de ré-écriture:changement de comportement étrange dans mod_rewrite
RewriteEngine on
RewriteRule ^dir/([^/]+)/(.*) action/do.php?a=$1&b=$2 [L,QSA]
dir
et action
sont dans le même répertoire, qui est aussi mon DocumentRoot
.
Lors de l'accès http://example.org/dir/a/b la demande doit (et a été) réécrite à http://example.org/action/do.php?a=a&b=b sans redirection ou quoi que ce soit de visible.
Cependant, depuis que je suis passé d'Apache 1.3 + mod_php à Apache 2.2 (mpm_worker) + PHP FastCGI (ne sais pas comment il est lié, mais il semble être), la règle de précédent renvoie une erreur 404:
L'URL demandée /var/www/action/do.php n'a pas été trouvée sur ce serveur.
Le DocumentRoot
est maintenant inséré dans la demande! Le fichier /var/www/var/www/action/do.php
n'existe évidemment pas.
Pour contourner ce problème, j'ai changé la règle: (ajouté un /
au début de la deuxième partie)
RewriteEngine on
RewriteRule ^dir/([^/]+)/(.*) /action/do.php?a=$1&b=$2 [L,QSA]
Et ça marche (parce que, heureusement, dans ce cas, je suis dans le répertoire DocumentRoot
) .
Savez-vous ce qui a causé ce changement de comportement? Avez-vous remarqué la même chose?