Je souhaite définir quelques Locationbalises dans ma configuration Apache. Par exemple : /image, /file, /audioet pour le passer à localhost:port/path. En ce moment je l'utilise pour /image:

 <Location /image>
        RewriteEngine  on
        Options +MultiViews +FollowSymLinks
        AllowOverride All
        ProxyPreserveHost On
        ProxyPass "http://localhost:PORT/image"
        ProxyPassReverse "http://localhost:PORT/image"
    </Location>

Dois-je écrire ce morceau de code pour chaque paramètre ? Ou y a-t-il un raccourci pour cela?

Merci!

answer
<Location /image>
   RewriteEngine  on
   Options +MultiViews +FollowSymLinks
   AllowOverride All
   ProxyPreserveHost On
   ProxyPass "http://localhost:PORT/image"
   ProxyPassReverse "http://localhost:PORT/image"
</Location>

Do I have to write this piece of code for every param?

Non. La RewriteEnginedirective ne fait rien ici et ni les Optionsni les AllowOverridedirectives n'ont de sens lorsque vous ne mappez pas sur les ressources du système de fichiers local. Ces options sont contrôlées et doivent être définies par le serveur Web "distant" auquel vous transférez les demandes avec la ProxyPassdirective.

Étant donné que ces directives sont inutiles, vous n'avez pas non plus besoin du crochet Location pour les définir et vous pouvez utiliser la ProxyPasssyntaxe en ligne recommandée de toute façon.

Cela réduit votre syntaxe aux seules lignes nécessaires :

ProxyPreserveHost On

ProxyPass "/image" "http://localhost:PORT/image"
ProxyPassReverse "/image" "http://localhost:PORT/image"

ProxyPass "/file" "http://localhost:PORT/file"
ProxyPassReverse "/file" "http://localhost:PORT/file"

Apache httpd offre la Includedirective de conserver un seul extrait de configuration avec les paramètres que vous souhaitez inclure textuellement à différents endroits, VirtualHost, Location, Directory bloque sans copier les mêmes lignes à chaque fois.