我尝试在 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”
然后我必须将其放入虚拟主机中。另外,我的虚拟主机中的端口号是错误的:我将 <VirtualHost *:80> 更改为 <VirtualHost *:8080>,将 <VirtualHost *:443> 更改为 <VirtualHost *:8443>。现在它似乎按预期工作了。
答案1
我刚刚解决了这个问题:
我必须将 FilesMatch 更改为: <FilesMatch .php$> SetHandler“proxy:fcgi://php:9000”
然后我必须将其放入虚拟主机中。另外,我的虚拟主机中的端口号是错误的:我将 <VirtualHost *:80> 更改为 <VirtualHost *:8080>,将 <VirtualHost *:443> 更改为 <VirtualHost *:8443>。现在它似乎按预期工作了。