
次のようにして、docker で新しい開発環境をセットアップしてみます。
- 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
全体は正常に稼働していますが、次の点が異なります:
私の vhost.conf では、ProxyPassMatch を使用して php ファイルを 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>
しかし、これもうまくいきません。結果は「ファイルが見つかりません」です。この問題の簡単な解決策はありますか? 誰かこの問題を解決するアイデアを持っているといいのですが。
さようなら、Jörg
私は問題を解決しました:
FilesMatch を次のように変更する必要がありました: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"
次に、それを Virtualhosts 内に配置する必要がありました。さらに、Virtualhost のポート番号が間違っていました。<VirtualHost *:80> を <VirtualHost *:8080> に、<VirtualHost *:443> を <VirtualHost *:8443> に変更しました。これで、期待どおりに動作するようになりました。
答え1
私は問題を解決しました:
FilesMatch を次のように変更する必要がありました: <FilesMatch .php$> SetHandler "proxy:fcgi://php:9000"
次に、それを Virtualhosts 内に配置する必要がありました。さらに、Virtualhost のポート番号が間違っていました。<VirtualHost *:80> を <VirtualHost *:8080> に、<VirtualHost *:443> を <VirtualHost *:8443> に変更しました。これで、期待どおりに動作するようになりました。