Apache-2.4

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

  • March 2, 2016

我們最近將 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))">

但是,根據我的正則表達式知識,這將匹配文件名中任何位置帶有“php”的文件。我發現需要匹配另一個問題中的“空”案例。我們也嘗試FilesMatch過同樣的結果。

從我從 Apache 2.4 文件中可以看出,這些都沒有任何意義。有沒有其他人看到過這樣的問題?

更新:我將伺服器回滾到 mpm_preforker 和 mod_php 沒有任何變化。然後我清除了 apache 和 php,重新安裝為 mpm_preforker 並且它再次工作。然後我升級到了 mpm_event 和 php-fpm,過了一會兒它就停止了工作。我正在嘗試隔離它在哪里中斷,並將發布我發現的內容。

UPDATE2:這似乎與 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文件匹配的標頭。

這似乎與 fastcgi 和 php-fpm 的東西有關。

不知道這是如何通過測試的……

如果請求的文件php-fpm 處理,則不處理指令。

相反,如果文件不是由 php-fpm 處理的(包括失去 php 文件的 404 響應),則處理指令。

<Files "*.php">作品

嘗試除標題之外的其他內容,例如重定向頁面:

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

如果你想對正則表達式做同樣的事情,你可以這樣做

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

如果您想匹配任何內容和任何 php 頁面:

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

使用文件匹配:

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

您可以進行測試,它將起作用。

我懷疑你在其他地方得到了一些覆蓋你的標題的指令

引用自:https://serverfault.com/questions/744130