Vous aurez besoin d'échapper pour les deux premières conditions afin qu'ils ne les envoient pas tous hors de l'hôte distant. Essayez ceci:
RewriteEngine On
RewriteRule ^foo$ /$1 [L]
RewriteRule ^foo/$ /$1 [L]
RewriteRule ^foo/([a-zA-Z0-9].*)$ http://example.com/$1 [L]
règle vérifie d'abord la première condition d'être clairement /foo
. Si c'est le cas, restez à la maison.
Le prochain test vérifie si ce n'est pas seulement /foo/
. Si c'est le cas, restez local.
Le dernier test vérifie si vous avez quelque chose qui pend derrière une barre oblique, si c'est le cas, alors vous voulez probablement l'hôte distant et l'envoie là.
Voici une copie/un collage verbatim, je teste avec des valeurs factices./foo,/foo /, et/foo/blah renvoient tous des erreurs de proxy plutôt que des 404 locaux. DocumentRoot/srv/proxytest RewriteEngine On RewriteRule ^/foo /(.+)$ http://remote.host/$1 [P, L] VirtualHost> Quelle est la –
erreur proxy? En ce moment, je soupçonne qu'Apache est aussi loin que de lire le P dans vos options, essayant d'initialiser sa communication avec mod_proxy, et de mourir avant de faire quoi que ce soit avec votre règle. – chaos
Erreur de proxy Le serveur proxy a reçu une réponse non valide d'un serveur en amont. Le serveur proxy n'a pas pu gérer la requête GET/foo/blah. Raison: Échec de la recherche DNS pour: remote.host –