Proxy inverse Apache | Réacheminement du répertoire générique (.htaccess)

Jul 24 2017

Comment serait-il possible d'avoir un proxy d'annuaire générique?

J'ai obtenu les bases mais le problème est que cela donne le répertoire dans lequel je suis, mon fichier htaccess:

RewriteEngine on

RewriteCond %{REQUEST_URI}  !(u|api|fonts|images|css|js) [NC]

# No directory

RewriteRule ^(.*)\.(jpg|gif|png|txt|mp4|mp3|json|js|zip|bmp|tiff|webp|webm|raw|psd|jpeg|jpe|wav)(.*) http://127.0.0.1:9000/owoapi/$1.$2$3?%{QUERY_STRING} [proxy]

# One Directory
RewriteRule ^([^/]+)/(.*)\.
(jpg|gif|png|txt|mp4|mp3|json|js|zip|bmp|tiff|webp|webm|raw|psd|jpeg|jpe|wav)
(.*) http://127.0.0.1:9000/owoapi/$1.$2$3?%{QUERY_STRING} [proxy]

Lors de la visite domain.tld/image.png, cela fonctionne très bien.

Lors de la visite domain.tld/test/image.png, cela est dû au fait qu'il inclut / test / dans l'URL proxy, comment pourrais-je résoudre ce problème?

Edit: Ce que j'essaie de réaliser, c'est de ne pas inclure l'URL précédente et de la faire agir comme si elle était accédée via domain.tld/image.pngau lieu dedomain.tld/test/image.png

Réponses

MrWhite Jul 24 2017 at 13:05
# One Directory
RewriteRule ^([^/]+)/(.*)\. ......

Supprimez simplement les accolades autour du premier motif capturé (car vous n'avez pas besoin de capturer ce groupe):

RewriteRule ^[^/]+/(.*)\. ......

Notez que cela ne gère qu'un seul segment de sous-répertoire (ce qui, je suppose, est l'intention).

Sinon, vous pourriez avoir changé les références arrière de $1.$2$3à .$2.$3$4

MISE À JOUR # 1: En plus de ce qui précède, vous devrez changer le bloc "Aucun répertoire" précédent pour qu'il ne corresponde en effet à aucun répertoire. En l'état, il correspond à l'ensemble du chemin de l'URL (c'est-à-dire les répertoires) et donc la deuxième règle n'est même pas en cours de traitement ...

# No directory
RewriteRule ^(.*)\.(jpg|gif| ......

Changer pour:

RewriteRule ^([^/]+)\.(jpg|gif| ......

MISE À JOUR # 2: Pour gérer (et ignorer) n'importe quel niveau de sous-répertoire, supprimez simplement le début de l'ancre de chaîne (c'est-à-dire ^) du RewriteRule modèle ci-dessus . Par exemple:

RewriteRule ([^/]+)\.(jpg|gif| ......