Apache Reverse Proxy | Perutean ulang direktori karakter pengganti (.htaccess)

Jul 24 2017

Bagaimana mungkin memiliki proxy direktori wildcard?

Saya telah mendapatkan dasar-dasarnya tetapi masalahnya, ini memberikan direktori tempat saya berada, file htaccess saya:

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]

Saat berkunjung domain.tld/image.png, itu berfungsi dengan baik.

Saat mengunjungi domain.tld/test/image.png, itu 404 karena fakta bahwa itu termasuk / test / dalam URL yang diproksikan, bagaimana saya akan memperbaikinya?

Sunting: Apa yang saya coba capai adalah tidak menyertakan URL sebelumnya dan membuatnya bertindak seperti sedang diakses melalui domain.tld/image.pngalih-alihdomain.tld/test/image.png

Jawaban

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

Cukup lepaskan kawat gigi di sekitar pola yang pertama ditangkap (karena Anda tidak perlu menangkap grup ini):

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

Perhatikan bahwa ini hanya menangani satu segmen subdirektori (yang saya anggap maksudnya).

Cara lainnya, Anda dapat mengubah referensi latar dari $1.$2$3menjadi .$2.$3$4

UPDATE # 1: Sebagai tambahan dari yang di atas, Anda perlu mengubah blok "No directory" sebelumnya sehingga memang tidak cocok dengan direktori. Seperti berdiri, itu cocok dengan seluruh URL-path (mis. Direktori) dan aturan kedua bahkan tidak sedang diproses ...

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

Mengubah:

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

UPDATE # 2: Untuk menangani (dan mengabaikan) setiap level subdirektori, cukup hapus awal dari string anchor (mis. ^) Dari RewriteRule pola di atas . Sebagai contoh:

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