5

这个.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 模块运行)中按预期工作,其中“工作”意味着它为所有资源(静态或动态)生成适当的标头。

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

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

4

1 回答 1

4

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

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

于 2015-08-21T22:44:10.170 回答