htaccess 文件夹保护 + php7.0-fpm/fastcgi : .php 文件仍然可以访问

htaccess folder protection + php7.0-fpm/fastcgi : .php files still accessible

我在 Ubuntu 14.04.
上用 php7.0-fpm/fastcgi、apache 2.4 安装了一个小 droplet 除了一个小细节外,一切都很顺利:

问题是我想通过经典的 .htaccess 保护来保护文件夹,没什么特别的。

但是,如果我转到 "my-droplet-ip/my-protected-folder/my-file.php",即使配置了 htaccess,我仍然可以访问它。

如果我转到 "my-droplet-ip/my-protected-folder",login/pass 提示会按预期显示。 "my-droplet-ip/my-protected-folder/a-file.(html|png|ini...)"

的正常行为相同

我读过很多东西,比如 fastcgi 可以在 htaccess 之前 "process" php 文件,但我真的想不通 why/how.

有什么想法吗?

尤里卡

短篇小说,请勿使用:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/

使用 FastCGI 处理 php 文件,因为似乎 ProxyPassMatch 指令在 .htaccess.

之前计算

更好用:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

那里有更多详细信息:https://ma.ttias.be/apache-2-4-proxypass-for-php-taking-precedence-over-filesfilesmatch-in-htaccess/