ProxyPassMatch и параметры + индексы (mod_autoindex)

У меня есть простая установка с Apache2.4 и PHP-FPM, и я пытаюсь включить опцию + Индексы, но я получаю 404 «Файл не найден». при попытке доступа к папке, в которой нет индексного файла, даже если включен автоиндекс.

Вот часть моего vhost:

#php
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/fpm/fatal.sock|fcgi://

#super public directory with Indexes!
<Location /pub>
Options +Indexes
IndexOptions +FancyIndexing
</Location>

Когда я пытаюсь получить доступ http://domain.com/pub/ Я ожидал увидеть список файлов, которые я положил туда, но вместо этого я получаю ошибку 404 Not Found.

Интересно, откуда это взялось, поскольку ProxyPassMatch не должен пересылать запрос, потому что в запросе нет .php, поэтому следующий — индекс каталога, который ищет index.php, который не существует (404), но почему тогда mod_autoindex не работает ?

Когда я удаляю строку ProxyPassMatch, автоиндекс работает просто отлично, и я вижу содержимое папки в списке.
Есть идеи?

2

Решение

Я нашел ответ здесь http://blog.famillecollet.com/post/2014/03/28/PHP-FPM-and-HTTPD-2.4-improvement

As the ProxyPassMatch directive is evaluated as the very beginning of each request:
-AddType (for MultiView) or DirectoryIndex directives are not usable
-right management per directory is not available
-each Alias directive needs another proxy rule

The SetHandler directive, evaluated later, is much more flexible / usable.

Поэтому я изменил свой vhost, чтобы он выглядел так, и избавился от директивы ProxyPassMatch.

<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/fpm/fatal.sock|fcgi://"</FilesMatch>

Примечание: это решение относится к Apache 2.4.9+

Интересно, есть ли разница в производительности и в каком направлении?

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]