Apache 2.4: ProxyPassMatch가 mod_rewrite를 방지합니까?

Apache 2.4: ProxyPassMatch가 mod_rewrite를 방지합니까?

다음을 사용하여 Docker에서 새로운 개발 환경을 설정하려고 합니다.

  • 비트나미 아파치 2.4 - bitnami/apache:2.4
  • 비트나미 PHP 8.0 - bitnami/php-fpm:8.0
  • 비트나미 MySQL 5.7 - bitnami/mysql:5.7

다음을 제외하고 모든 것이 잘 실행되고 있습니다.

내 vhost.conf에서 ProxyPassMatch를 사용하여 php-files를 php-fcgi로 리디렉션합니다.

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

내 문제는 하위 폴더 "dbeS"의 *.php 파일을 "index.php?id=filename"으로 다시 작성해야 한다는 것입니다. .htaccess의 RewriteRule은 다음과 같습니다.

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

그러나 그것은 단순히 작동하지 않습니다. 브라우저 http://localhost/dbeS/mytest.php에서 열면 http://localhost/dbeS/index.php?id=mytest로 리디렉션되어야 합니다. 그러나 대신 그는 http://localhost/dbeS/mytest.php(빈 파일)를 엽니다.

문제는 ProxyPassMatch가 .htaccess보다 먼저 실행되어 .htaccess가 완전히 무시된다는 것입니다. 따라서 filematch를 사용하여 php fcgi를 활성화해야 합니다.

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

그러나 이것도 작동하지 않습니다. 결과는 "파일을 찾을 수 없습니다."입니다. 이 문제에 대한 쉬운 해결책이 있습니까? 여기 누군가가 이 문제를 해결하는 방법을 알고 있기를 바랍니다.
안녕, 요르그

방금 문제를 해결했습니다.

FilesMatch를 <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"으로 변경해야 했습니다.

그런 다음 이를 Virtualhosts에 넣어야 했습니다. 또한 내 가상 호스트에 잘못된 포트 번호가 있습니다. <VirtualHost *:80>을 <VirtualHost *:8080>으로 변경하고 <VirtualHost *:443>을 <VirtualHost *:8443>으로 변경했습니다. 이제 예상대로 작동하는 것 같습니다.

답변1

방금 문제를 해결했습니다.

FilesMatch를 <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"으로 변경해야 했습니다.

그런 다음 이를 Virtualhosts에 넣어야 했습니다. 또한 내 가상 호스트에 잘못된 포트 번호가 있습니다. <VirtualHost *:80>을 <VirtualHost *:8080>으로 변경하고 <VirtualHost *:443>을 <VirtualHost *:8443>으로 변경했습니다. 이제 예상대로 작동하는 것 같습니다.

관련 정보