Apache 不会为 PHP 脚本设置标头

Álv*_*lez 5 php apache mod-fcgid mod-expires mod-headers

这个.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>
Run Code Online (Sandbox Code Playgroud)

...在我的开发框(Windows框,Apache/2.4.10,PHP作为Apache模块运行)中按预期工作,其中“有效”意味着它为所有资源(静态或动态)生成适当的标头。

但是,在我的生产服务器(Linux 机器,Apache/2.2.31,PHP 作为 FastCGI 与 mod_fcgid/2.3.9 运行)中,它仅适用于静态资产,不适用于 PHP 脚本。

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

cov*_*ner 4

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

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