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))">
但是,根據我的正則表達式知識,這將匹配文件名中任何位置帶有“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>
您可以進行測試,它將起作用。
我懷疑你在其他地方得到了一些覆蓋你的標題的指令