Php ProxyPassMatch和选项+;索引(mod_autoindex)

Php ProxyPassMatch和选项+;索引(mod_autoindex),php,mod-proxy,apache2.4,mod-autoindex,Php,Mod Proxy,Apache2.4,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

我使用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>
#php
ProxyPassMatch^/(.\.php(/.*)$unix:/var/run/fpm/fatal.sock | fcgi://
#带索引的超级公共目录!
选项+索引
索引选项+繁体索引
当我尝试访问时,我希望看到我放在那里的文件列表,但是我得到了错误404 Not Found

我想知道这是从哪里来的,因为ProxyPassMatch不应该转发请求,因为查询中没有.php,所以接下来是目录索引,它查找index.php,而index.php不存在(404),但为什么mod_autoindex不起作用

当我删除ProxyPassMatch行时,自动索引工作正常,我看到列出的文件夹内容。 有什么想法吗?

我在这里找到了答案

由于ProxyPassMatch指令是在每个请求的最开始处计算的:

  • AddType(对于多视图)或DirectoryIndex指令不可用

  • 每个目录的权限管理不可用

  • 每个Alias指令都需要另一个代理规则

稍后评估的SetHandler指令更加灵活/可用

所以我把vhost改成这样,去掉了ProxyPassMatch指令

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

SetHandler“代理:unix:/var/run/fpm/fatal.sock | fcgi://”
注意:此解决方案适用于Apache 2.4.9+


(我确实想知道是否有任何性能差异以及在哪个方向上?

值得一提的是,对于建议的解决方案,您还需要添加:SetHandler application/x-httpd-php-source,如链接文章所示。我怀疑此版本的性能稍差,因为正如您的引用所示,
ProxyPassMatch
跳过目录权限管理等几个步骤。我怀疑这些差异是否大到足以产生重大影响。