У меня установлен 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» - это DocumentRoot в vhost.
В этом каталоге у меня есть файл .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, чтобы принимать такие перезаписи?
Ваша проблема в том, что файл .htaccess никогда не читается. .htaccess читается только после того, как apache определит, что ему нужно искать запрошенный ресурс в его локальной файловой системе. Однако вы говорите apache перенаправить запрос другому процессу ...
Вам нужно будет добавить перезаписи в ваш основной конфиг.