Apache 不会为 PHP 脚本设置 headers

Apache won't set headers for PHP script

这个.htaccess文件:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 4 month"
</IfModule>
<IfModule mod_headers.c>
    Header merge X-ModHeaders "Yes, it is installed"
</IfModule>

... 在我的开发箱中按预期工作(Windows 箱,Apache/2.4.10,PHP 运行 作为 Apache 模块),其中 "works" 表示它为所有资源(静态或动态)生成适当的 headers。

但是,在我的生产服务器中(Linux box,Apache/2.2.31,PHP 运行 as FastCGI with mod_fcgid/2.3.9)它只适用于静态资产,不适用于 PHP 脚本。

我怀疑差异来自 PHP SAPI 是否正确?有没有办法修复它,这样我就不需要复制生成 HTTP 的代码 headers?

如果 PHP 通过 mod_proxy_fcgi 是 运行,则可能不涉及文件系统目录,因此不会发生 htaccess 查找。

现在手册中记录了 php+mod_proxy_fcgi 的更新风格,它使用 SetHandler 而不是 ProxyPass——允许处理 htaccess 之类的东西,因为核心实际上查找文件系统中的 URL 作为第一步。