我在服务器上安装了 Apache 2.4 和 PHP-FPM。要从 Apache 传递到 PHP-FPM,我使用以下命令:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9001/hosting_files/site.com/admin_secure/$1
“admin_secure” 是 vhost 中的 DocumentRoot。
在该目录中,我有一个 .htaccess 文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
该网站一直正常运行,直到我尝试访问webroot
目录中应该包含的内容。例如,如果我转到目录vendors/kcfinder/browse.php
中的webroot
,我会收到“文件未找到”错误。如果我转到webroot/vendors/kcfinder/browse.php
,它就可以正常工作。
我已打开重写和代理日志记录,但重写似乎从未发生。它只会发送我在 URL 中输入的内容(如果是 PHP 文件)。
有没有办法编写我的 ProxyPassMatch 语句来接受这样的重写?
答案1
您的问题是 .htaccess 文件从未被读取。只有在 apache 确定需要在其本地文件系统上查找请求的资源后,才会读取 .htaccess。但是,您告诉 apache 将请求转发给另一个进程...
您需要将重写添加到您的主配置中。