ubuntu 14.04 Apache 2.4.7 mpm_event文件和FilesMatch不工作

我们最近将我们的Apache 2.4.7模式从mpm_pre-fork切换到mpm_event。 从那以后,我们一直无法让我们的Files指令工作。

 <Files "*.php"> Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0" </Files> 

我确实设法解决这个混乱的问题:

 <Files ~ "((^$)|(php))"> 

但是,根据我的正则expression式知识,这将在文件名中的任何位置匹配“php”文件。 我发现需要匹配这个其他问题的“空”情况。 我们也尝试了使用相同结果的FilesMatch

这些都不能从我从Apache 2.4文档中得知。 有没有其他人看到这样的问题?

更新 :我把服务器回滚到mpm_preforker和mod_php没有任何改变。 然后我清除了Apache和PHP,重新安装为mpm_preforker,它再次工作。 然后我升级到mpm_event和php-fpm,稍后停止工作。 我正试图隔离它打破的地方,并发布我发现的东西。

更新2 :这似乎与fastcgi或php-fpm的东西有关。 我有两个<Files>指令,一个用于生成唯一标头的html和一个用于php指令:

 <Files *.html> Header always set X-Aaron-files "html match" </Files> <Files *.php> Header always set X-Aaron-files "php match" </Files> 

如果我去一个虚构的php文件,那么我得到一个404消息与php-match头。 但如果我去一个真正的php文件,然后服务器执行PHP文件,但不会返回标头指示一个php文件匹配。

<Files "*.php">工作

尝试另一个比标题,比如redirect页面:

 <Files "*.php"> redirect 301 / /anyPage.htm </Files> 

如果你想用正则expression式做同样的事情,你可以这样做

 <Files ~ "\.php"> redirect 301 / /anyPage.htm </Files> 

如果你想使比赛没有任何和任何PHP页面:

 <Files ~ "(^$|\.php)"> redirect 301 / /anyPage.htm </Files> 

使用filematch:

 <FilesMatch "(^$|\.php)"> redirect 301 / /anyPage.htm </FilesMatch> 

你可以使testing它将工作。

我怀疑你有其他地方的某个地方覆盖你的头

这似乎与fastcgi和php-fpm的东西有关。
不知道这是如何通过testing….

如果请求的文件由php-fpm处理的,那么指令不会被处理。

如果相反,文件不是由php-fpm处理的(其中包括对缺less的php文件的404响应),则处理这些指令。