Bonjour à tous,
J'ai un site qui héberge plusieurs développeurs PHP indépendants.
Les URL sont du genre:
http://serveur.dom.be/nomsite1
http://serveur.dom.be/nomsite2
J'utilise suexec et mod_userdir pour que chacun tourne son php independamment.
pour que les adresses ne contiennent pas de ~login1 , ~login2,... j'utilise du rewriting dans httpd.conf:
RewriteRule ^/nomsite1/(.*) /\~login1/$1 [PT]
RewriteRule ^/nomsite1/(.*) /\~login2/$1 [PT]
Je désire désactiver mod_userdir et plutôt utiliser des virtualhosts (adresses "internes" nomsite1.dom.be). Seulement j'aimerais que les URL extérieurs soient toujours les anciennes.
J'ai essayé de changer le rewrite en:
RewriteRule ^/nomsite1/(.*) http://nomsite1.dom.be/$1 [PT]
Malheureusement, il semble que Apache force un redirect (extrait du rewrite_log)
(2) rewrite '/nomsite1/test.php' -> 'http://nomsite1.dom.be/test.php'
(2) implicitly forcing redirect (rc=302) with http://nomsite1.dom.be/test.php
(2) forcing 'http://nomsite1.dom.be/test.php' to get passed through to next API URI-to-filename handler
Le navigateur reçoit l'erreur "Bad Request Your browser sent a request that this server could not understand."
Lorsque j'enlève l'option "[PT]" le serveur renvoit une redirection au navigateur vers http://nomsite1.dom.be/test.php
c'est comme si le rewrite est réalisé à un moment où le choix du virtualhost à déjà été fait par apache et ne peut être changé (sauf par une redirection).
Y-a-t-il moyen de faire un rewrite de l'adresse entrante avant que le choix du virtualhost soit irreversible?
Dans la doc de apache httpd2.2 on parle de "filtres" qui semblent se placer avant tout processing. Peut-on utiliser mod_rewrite à ce niveau et comment?
Merci d'avance.
Emilou
Partager