ubuntu 14.04 Apache 2.4.7 mpm_event Arquivos e FilesMatch não funciona

3

Recentemente, mudamos o modo Apache 2.4.7 de mpm_pre-fork para mpm_event. Desde então, não conseguimos que nossa diretiva Files funcione.

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

Consegui trabalhar com essa bagunça complicada:

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

Mas, de acordo com meu conhecimento de regex, isso corresponderá aos arquivos com "php" em qualquer lugar no nome do arquivo. Eu encontrei a necessidade de combinar o caso "null" de esta outra questão . Também tentamos FilesMatch com o mesmo resultado.

Nada disso faz sentido pelo que eu posso dizer da documentação do Apache 2.4. Alguém viu algo parecido com esse problema?

UPDATE : Eu rolei o servidor de volta para mpm_preforker e mod_php sem alteração. Eu então purgou o apache e php, re-instalado como mpm_preforker e funcionou novamente. Eu então atualizei para mpm_event e php-fpm e ele parou de funcionar um pouco. Estou tentando isolar onde ele quebra e vou postar o que eu encontrar.

UPDATE2 : Isso parece estar relacionado ao material fastcgi ou php-fpm. Eu tenho duas diretivas <Files> , uma para html e uma para php que geram cabeçalhos exclusivos:

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

Se eu for para um arquivo php fictício, recebo uma mensagem 404 com o cabeçalho de php-match . MAS se eu for para um arquivo php real, o servidor executará o arquivo php, mas NÃO retornará os cabeçalhos indicando uma correspondência de arquivo php .

    
por Aaron 19.12.2015 / 02:49

2 respostas

0

Isso parece estar relacionado ao material fastcgi e php-fpm.
Não tenho certeza de como isso foi feito através de testes ...

Se o arquivo solicitado for tratado pelo php-fpm, as diretivas não serão processadas.

Se, em vez disso, o arquivo não for manipulado pelo php-fpm (que inclui 404 respostas para um arquivo php ausente), as diretivas serão processadas.

    
por 02.03.2016 / 22:50
1

<Files "*.php"> funciona

Tente outra coisa que um cabeçalho, como uma página de redirecionamento:

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

Se você quiser fazer o mesmo com o regexp, você pode fazer

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

Se você quiser fazer a correspondência para nada & qualquer página php:

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

Usando o filematch:

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

Você pode fazer o teste que vai funcionar.

Eu suspeito que você tenha alguma intrução em algum outro lugar que substitua o seu cabeçalho

    
por 19.12.2015 / 17:20