Apache 2.4: ProxyPassMatch impede mod_rewrite?

Apache 2.4: ProxyPassMatch impede mod_rewrite?

Tento configurar um novo ambiente de desenvolvimento no docker, com:

  • 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

A coisa toda está funcionando bem, exceto:

No meu vhost.conf eu redireciono arquivos php para php-fcgi com ProxyPassMatch:

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

Meu problema é que preciso reescrever os arquivos *.php em uma subpasta "dbeS" para "index.php?id=filename". O RewriteRule em .htaccess se parece com isto:

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

Mas simplesmente não funciona. Quando abro no navegador http://localhost/dbeS/mytest.php devo ser redirecionado para http://localhost/dbeS/index.php?id=mytest. Mas em vez disso ele abre o http://localhost/dbeS/mytest.php (que é um arquivo vazio).

Li em algum lugar que o problema é que o ProxyPassMatch é executado antes do .htaccess para que o .htaccess seja completamente ignorado. Então eu deveria ativar o php fcgi com filematch:

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

Mas isso também não funciona. O resultado é "Arquivo não encontrado". Existe uma solução fácil para este problema? Espero que alguém aqui tenha uma ideia de como resolver esse problema.
Tchau, Jorg

Acabei de resolver o problema:

Tive que mudar o FilesMatch para: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"

Aí tive que colocar dentro do Virtualhosts. Além disso, eu tinha números de porta errados em meu Virtualhost: mudei <VirtualHost *:80> para <VirtualHost *:8080> e <VirtualHost *:443> para <VirtualHost *:8443>. Agora parece funcionar conforme o esperado.

Responder1

Acabei de resolver o problema:

Tive que mudar o FilesMatch para: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"

Aí tive que colocar dentro do Virtualhosts. Além disso, eu tinha números de porta errados em meu Virtualhost: mudei <VirtualHost *:80> para <VirtualHost *:8080> e <VirtualHost *:443> para <VirtualHost *:8443>. Agora parece funcionar conforme o esperado.

informação relacionada