我在服务器上用PHP-FPM设置了Apache 2.4。 从Apache传递到PHP-FPM我使用以下内容:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9001/hosting_files/site.com/admin_secure/$1
“admin_secure”是虚拟主机中的DocumentRoot。
在该目录中,我有一个包含以下内容的.htaccess文件:
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule>
该网站的工作,直到我试图访问应该在webroot目录中的东西。 例如,如果我访问位于webroot目录内的vendors/kcfinder/browse.php ,则会出现“文件未find”错误。 如果我去webroot/vendors/kcfinder/browse.php ,它的工作原理。
我已经打开了重写和代理日志logging,看起来重写从来没有发生。 它只是发送任何我input的URL(如果它是一个PHP文件)。
有没有办法写我的ProxyPassMatch语句,以重写这样的?
你的问题是.htaccess文件永远不会被读取。 .htaccess仅在apache确定需要查找其本地文件系统上请求的资源之后才被读取。 然而,你告诉Apache将请求转发到另一个进程…
您需要将重写添加到主configuration中。