Apache 2.4: ProxyPassMatch verhindert mod_rewrite?

Apache 2.4: ProxyPassMatch verhindert mod_rewrite?

Ich versuche, eine neue Entwicklungsumgebung in Docker einzurichten, mit:

  • Bitnami Apache 2.4 - bitnami/apache:2.4
  • Bitnami PHP 8.0 - bitnami/php-fpm:8.0
  • Bitnami Mysql 5.7 - bitnami/mysql:5.7

Das Ganze läuft einwandfrei, bis auf:

In meiner vhost.conf leite ich PHP-Dateien mit ProxyPassMatch zu PHP-FCGI um:

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/app/$1

Mein Problem ist, dass ich *.php-Dateien im Unterordner "dbeS" nach "index.php?id=filename" umschreiben muss. Die RewriteRule in der .htaccess sieht folgendermaßen aus:

  RewriteRule ^dbeS/(.*)\.php$ dbeS/index.php?id=$1 [QSA,L]

Aber es funktioniert einfach nicht. Wenn ich im Browser http://localhost/dbeS/mytest.php öffne, sollte ich zu http://localhost/dbeS/index.php?id=mytest weitergeleitet werden. Aber stattdessen öffnet er http://localhost/dbeS/mytest.php (was eine leere Datei ist).

Ich habe irgendwo gelesen, dass das Problem darin besteht, dass ProxyPassMatch vor .htaccess ausgeführt wird, sodass .htaccess vollständig ignoriert wird. Daher müsste ich php fcgi mit Filematch aktivieren:

<FilesMatch \.php$>
  SetHandler "proxy:fcgi://php:9000/app/"
</FilesMatch>

Aber auch das funktioniert nicht. Das Ergebnis ist "Datei nicht gefunden". Gibt es eine einfache Lösung für dieses Problem? Ich hoffe, jemand hier hat eine Idee, wie man dieses Problem lösen kann.
Tschüß, Jörg

Ich habe das Problem gerade gelöst:

Ich musste FilesMatch ändern in: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"

Dann musste ich es in die Virtualhosts einfügen. Außerdem hatte ich falsche Portnummern in meinem Virtualhost: Ich habe <VirtualHost *:80> in <VirtualHost *:8080> und <VirtualHost *:443> in <VirtualHost *:8443> geändert. Jetzt scheint es wie erwartet zu funktionieren.

Antwort1

Ich habe das Problem gerade gelöst:

Ich musste FilesMatch ändern in: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"

Dann musste ich es in die Virtualhosts einfügen. Außerdem hatte ich falsche Portnummern in meinem Virtualhost: Ich habe <VirtualHost *:80> in <VirtualHost *:8080> und <VirtualHost *:443> in <VirtualHost *:8443> geändert. Jetzt scheint es wie erwartet zu funktionieren.

verwandte Informationen